我想通过TwigBridge使用Laravel中的Twig扩展包中的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 加载此扩展?
好吧,我觉得有点愚蠢,但让我们充分利用它。下面是一个过于明确的演练,介绍如何在 Laravel 中为 TwigBridge 启用其他 Twig 扩展。
TL;DR:扩展是在extensions.php
中配置的,而不是config.php
。
作曲家
从这里开始。要么使用作曲家的要求 CLI 命令; composer require twig/extensions
或将以下行添加到 composer.json 文件中。
"twig/extensions": "1.2.*@dev",
如果修改 composer.json,请确保运行composer update
以便安装包。
配置树枝桥
要将 Twig 扩展添加到 TwigBridge,必须将它们添加到 laravel/app/config/packages/rcrowe/twigbridge/extensions.php
中的 enabled
数组中。不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 扩展项目包含五个扩展,此处列出了它们包含的过滤器:
- 阵列 -
Twig_Extensions_Extension_Array
过滤器:shuffle
- 日期 -
Twig_Extensions_Extension_Date
过滤器:time_diff
- I18n -
Twig_Extensions_Extension_I18n
过滤器:trans
- 国际 -
Twig_Extensions_Extension_Intl
过滤器:localizeddate
,localizednumber
,localizedcurrency
- 文本 -
Twig_Extensions_Extension_Text
过滤器:truncate
,wordwrap