如何从控制器添加本地Twig扩展

时间:2016-01-29 22:28:45

标签: symfony filter twig local twig-extension

我有一个非常专业的过滤器,我想用于单个页面,而不是使其成为全局过滤器。我尝试这样做(这不是我想要的功能,它只是一个测试):

$this->get('twig')
    ->addFilter(new \Twig_SimpleFilter('chgname', function ($string) {
        return substr($string, 0, 5);
    }));

但是我收到错误,"无法添加过滤器,因为扩展程序已经初始化"。

我知道我可以在AppBundle / Twig目录中创建一个类并将其添加为服务,但是1)它非常重,而且只需要一个我需要的简单过滤器的PITA,以及2)它使它成为整个应用程序的全局,这对我本地需要的东西是愚蠢的。

有没有办法做到这一点,还是我只坚持全球扩展?提前谢谢。

1 个答案:

答案 0 :(得分:0)

Twig会在您的应用启动时加载环境,但您无法动态更改它。

如果您认为Symfony太重,您仍然可以查看Silex(使用Symfony组件),因此您可以编写如下内容:

ENOMEM

请参阅http://silex.sensiolabs.org