3

我需要在 Silex 框架中为 Twig 添加自定义过滤器。例如,我想将此函数应用于某个变量:

public function addExclamation($text) {
    return $text.'!!!';
}

在 twig-template 中执行以下操作:

{{ text|exclam }}

阅读http://twig.sensiolabs.org/doc/advanced.html后,我创建了“Project_Twig_Extension.php”:

class Project_Twig_Extension extends Twig_Extension
{
    public function getName()
    {
        return 'project';
    }

    public function getFilters()
    {
        return array(
            new Twig_SimpleFilter('exclam', 'addExclamation'),
        );
    }

    public function addExclamation($text) {
        return $text.'!!!';
    }
}

但我无法理解我需要把这个文件放在哪里,以及如何在 Silex 的“index.php”中注册这个过滤器。

你能给我一步一步的指导吗?方法,在Twig addFilter using Silex 中描述?不工作。

4

2 回答 2

2

您可以像这样添加自定义过滤器:

$app['twig'] = $app->share($app->extend('twig', function(\Twig_Environment $twig) {
    $twig->addFilter(new Twig_SimpleFilter('exclaim', function ($value) {
        return $value.'!!!';
    }));

    return $twig;
}));

参考:http ://silex.sensiolabs.org/doc/providers/twig.html#customization

于 2016-03-13T06:53:13.763 回答
0

作为记录,现在注册 Twig 扩展的新方法如下:

$app['twig'] = $app->extend('twig', function (\Twig_Environment $twig, Silex\Application $app) {
    $twig->addExtension(new My_Twig_Extension($app));

    return $twig;
});

文档http://silex.sensiolabs.org/doc/providers/twig.html#customization已更新。

蒂姆

于 2017-01-06T17:20:15.757 回答