Twig Silex中树枝的自定义过滤器

Twig Silex中树枝的自定义过滤器,twig,silex,twig-filter,Twig,Silex,Twig Filter,我需要为Silex框架中的细枝添加自定义过滤器。例如,我想将此函数应用于某个变量: public function addExclamation($text) { return $text.'!!!'; } 在“细枝模板”中执行以下操作: {{ text|exclam }} $app['twig'] = $app->share($app->extend('twig', function(\Twig_Environment $twig) { $twig->ad

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

public function addExclamation($text) {
    return $text.'!!!';
}
在“细枝模板”中执行以下操作:

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

    return $twig;
}));
阅读之后,我创建了“Project_Twig_Extension.php”:

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


你能给我一个循序渐进的指导吗?方法,如不工作中所述。

您可以添加如下自定义筛选器:

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

    return $twig;
}));

参考资料:

对于记录,现在注册细枝扩展的新方法如下:

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

    return $twig;
});
文件已经更新


蒂姆

你说的“不工作”是什么意思?你收到错误消息了吗?我创建了
InsolisExtension.php
,并将它放到
W:\home\example.com\Insolis\Twig
,然后我写了
index.php
注册代码。错误:
致命错误:在第39行的W:\home\example.com\index.php中找不到类“Insolis\Twig\InsolisExtension”。文件夹
vendor
index.php
处于同一级别。您忘了在自动加载器中注册Insolis命名空间。我写
require\u once\uu DIR\uu.'/App/Twig/AppExtension.php'在“index.php”中,它可以工作!但我认为这并不完全正确。。。如何正确注册命名空间?请阅读composer的工作原理以及如何在autoloader中注册自己的命名空间。