通过Laravel中的TwigBridge加载Twig扩展

时间:2015-01-22 19:26:51

标签: php laravel twig

我想通过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加载此扩展程序需要哪些配置设置?

1 个答案:

答案 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.phpextensions.php个文件 - 无config.php。我已经使用TwigBridge一段时间了,所以我仍然有一个人躺着,可能会增加我的困惑。

分机名称

每个扩展名的名称都可以在扩展文件中找到 - 它们只是Train_Case类名。自2015年1月起,Twig-extensions project包含五个扩展程序,此处列出了其中包含的过滤器:

  • 数组 - Twig_Extensions_Extension_Array
    过滤器:shuffle
  • 日期 - Twig_Extensions_Extension_Date
    过滤器:time_diff
  • I18n - Twig_Extensions_Extension_I18n
    过滤器:trans
  • 国际 - Twig_Extensions_Extension_Intl
    过滤器:localizeddatelocalizednumberlocalizedcurrency
  • 文字 - Twig_Extensions_Extension_Text
    过滤器:truncatewordwrap