如何编写一个自定义树枝扩展

编辑本页

警告:您正在浏览的文档欧宝官网下载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使用嫩枝TwigFilterAppExtension扩展AbstractExtension公共函数getFilters()返回数组TwigFilter (“价格”数组“formatPrice”)));}公共函数formatPrice数量小数0decPoint“。”thousandsSep”、“价格= number_format (数量小数decPointthousandsSep);价格“美元”价格返回价格;}}

请注意

在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使用嫩枝TwigFunctionAppExtension扩展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许可证。