我需要在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?中描述的方法不起作用。
答案 0 :(得分:1)
您可以添加以下自定义过滤器:
$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
答案 1 :(得分:1)
对于记录,现在注册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已更新。
添