如何编写一个自定义树枝扩展
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何编写一个自定义树枝扩展
编写扩展的主要动机是将经常使用的代码转移到可重用类中,例如添加对国际化的支持。扩展可以定义标记、过滤器、测试、操作符、全局变量、函数和节点访问者。
创建扩展还可以更好地分离编译时执行的代码和运行时所需的代码。因此,它使您的代码更快。
提示
在编写自己的扩展之前,请先查看树枝官方扩展存储库.
创建扩展类
请注意
本文描述了如何编写从Twig 1.12开始的自定义Twig扩展。如果您使用的是旧版本,请阅读树枝扩展文档遗留欧宝官网下载app.
为了获得你的自定义功能,你必须首先创建一个树枝扩展类。作为一个例子,你将创建一个价格过滤器来格式化一个给定的数字为价格:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/ / src / AppBundle /理解/ AppExtension.php名称空间AppBundle\嫩枝;使用嫩枝\扩展\AbstractExtension;使用嫩枝\TwigFilter;类AppExtension扩展AbstractExtension{公共函数getFilters(){返回数组(新TwigFilter (“价格”,数组($这,“formatPrice”)));}公共函数formatPrice($数量,$小数=0,$decPoint=“。”,$thousandsSep=”、“){$价格= number_format ($数量,$小数,$decPoint,$thousandsSep);$价格=“美元”.$价格;返回$价格;}}
请注意
在Twig 1.26之前,你的扩展必须定义一个额外的getName ()
方法,该方法返回带有扩展的内部名称的字符串(例如。app.my_extension
).当你的扩展需要兼容1.26之前的Twig版本时,包括上面例子中省略的这个方法。
下面是如何创建一个自定义函数:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
/ / src / AppBundle /理解/ AppExtension.php名称空间AppBundle\嫩枝;使用嫩枝\扩展\AbstractExtension;使用嫩枝\TwigFunction;类AppExtension扩展AbstractExtension{公共函数getFunctions(){返回数组(新TwigFunction (“区域”,数组($这,“calculateArea”)));}公共函数calculateArea(int$宽度, int$长度){返回$宽度*$长度;}}
提示
除了自定义过滤器和函数,您还可以注册全局变量.
将扩展注册为服务
现在你必须让服务容器知道你新创建的树枝扩展:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
# app / config / services.yml服务:app.twig_extension:类:AppBundle \树枝\ AppExtension公众:假标签:-{名称:twig.extension}
使用自定义扩展
使用您新创建的树枝扩展与其他没有什么不同:
1 2 3 4 5 6 7 8
{#使用不带参数的过滤器。输出$5,500.00 #}{{'5500'|价格}}{#向过滤器传递参数。输出$5500,2516 #}{{'5500.25155'|price(4, ',', ")}}{#向函数传递参数。输出140 #}面积:{{area(20,7)}}
进一步学习
要更深入地了解树枝扩展,请查看树枝扩展文档欧宝官网下载app.
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。