我想通过TwigBridge在Laravel中使用Twig-extensions软件包中的truncate
过滤器,但我一直看到这个错误:
The filter "truncate" does not exist in "[template file]" at line [##].
我尝试以几种不同的方式将扩展名添加到laravel/app/config/packages/rcrowe/twigbridge/config.php
扩展数组中,但都没有。
'Twig_Extensions_Extension_Text',
和
function () {
return new Twig_Extensions_Extension_Text();
},
Composer正确安装了文件,我可以使用相同的自动加载器从测试文件加载它。
要让TwigBridge加载此扩展程序需要哪些配置设置?
答案 0 :(得分:4)
嗯,我觉得有点傻,但是让我们充分利用它。这是一个关于如何在Laravel中为TwigBridge启用其他Twig扩展的过分明确的演练。
TL; DR:扩展程序在extensions.php
中配置,而不是config.php
。
<强>作曲强>
从这里开始。使用Composer的require CLI命令; composer require twig/extensions
或将以下行添加到 composer.json 文件中。
"twig/extensions": "1.2.*@dev",
如果您修改composer.json,请务必运行composer update
以便安装软件包。
配置TwigBridge
要将Twig扩展添加到TwigBridge,必须将它们添加到enabled
中的laravel/app/config/packages/rcrowe/twigbridge/extensions.php
数组中。不是config.php
。即使config.php
中可能存在扩展阵列,并且其他所有内容都已配置,但这并不是启用扩展的位置。这在TwigBridge的文档中有详细说明,但很容易被忽略。我设法错过了好几次。
'enabled' => [
'TwigBridge\Extension\Loader\Facades',
'TwigBridge\Extension\Loader\Filters',
// ...
'Twig_Extensions_Extension_Text', // <- add this
],
TwigBridge的文档引用了config.php
文件,但配置文件似乎已经被重命名为twig.php
。使用artisan config:publish rcrowe/twigbridge
生成新配置会生成twig.php
和extensions.php
个文件 - 无config.php
。我已经使用TwigBridge一段时间了,所以我仍然有一个人躺着,可能会增加我的困惑。
分机名称
每个扩展名的名称都可以在扩展文件中找到 - 它们只是Train_Case类名。自2015年1月起,Twig-extensions project包含五个扩展程序,此处列出了其中包含的过滤器:
Twig_Extensions_Extension_Array
shuffle
Twig_Extensions_Extension_Date
time_diff
Twig_Extensions_Extension_I18n
trans
Twig_Extensions_Extension_Intl
localizeddate
,localizednumber
,localizedcurrency
Twig_Extensions_Extension_Text
truncate
,wordwrap