如何编写一个定制的树枝扩展
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何编写一个定制的树枝扩展
编写一个扩展的主要动机是经常使用的代码移动到一个可重用的类添加对国际化的支持。可以定义一个扩展标签、过滤器、测试、运营商、全局变量、函数和节点游客。
创建一个扩展也使得更好的分离的代码是在运行时编译所需时间和代码执行。因此,它使代码更快。
提示
在编写自己的扩展之前,看一看树枝官方扩展库。
创建扩展类
让您的自定义功能,您必须首先创建一个分支扩展类。作为一个例子,你将创建一个过滤器价格格式给定价格:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25
/ / src / Acme / DemoBundle /理解/ AcmeExtension.php名称空间Acme\DemoBundle\嫩枝;类AcmeExtension扩展\Twig_Extension{公共函数getFilters(){返回数组(“价格”= >新\ Twig_Filter_Method (美元这,“priceFilter”),);}公共函数priceFilter(美元数量,美元小数=0,美元decPoint=“。”,美元thousandsSep=”、“){美元价格= number_format (美元数量,美元小数,美元decPoint,美元thousandsSep);美元价格=“美元”。美元价格;返回美元价格;}公共函数getName(){返回“acme_extension”;}}
提示
随着自定义过滤器,您还可以添加自定义“功能”和“全局变量”注册。
注册一个扩展服务
现在你必须让服务容器知道您新创建的分支扩展:
- YAML
- XML
- PHP
1 2 3 4 5 6
# src / Acme / DemoBundle /资源/ config / services.yml服务:acme.twig.acme_extension:类:Acme \ DemoBundle \树枝\ AcmeExtension标签:- - - - - -{名称:twig.extension}
1 2 3 4 5 6
< !- - - - - -- - - - - -src/Acme/DemoBundle/Resources/config/services.xml -->< /span><服务><服务id=“acme.twig.acme_extension”类=“Acme \ DemoBundle \树枝\ AcmeExtension”><标签的名字=“twig.extension”/ >< /服务>< /服务>
1 2 3 4 5 6
/ / src / Acme / DemoBundle /资源/ config / services.php使用ob娱乐下载\组件\DependencyInjection\定义;美元acmeDefinition=新定义(“\ Acme \ DemoBundle \树枝\ AcmeExtension”);美元acmeDefinition- >addTag (“twig.extension”);美元容器- >setDefinition (“acme.twig.acme_extension”,美元acmeDefinition);
请注意
记住,树枝扩展不延迟加载。这意味着有一个更高的机会,你会得到一个CircularReferenceException或者一个ScopeWideningInjectionException如果任何服务(或在这种情况下你的树枝延伸)依赖于请求服务。看一看的更多信息如何使用范围。
使用自定义的扩展
使用您新创建的分支扩展比其他没有什么不同:
1 2
{#输出5500美元#}{{‘5500’|价格}}
其他参数传递到您的过滤器:
1 2
{#输出5500美元,2516 #}{{“5500.25155”|价格(4 ',' ")}}
进一步学习
更深入的研究分支扩展,请看看树枝扩展文档欧宝官网下载app。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。