我想我在Silex Twig Provider中发现了一个错误。 我尝试在Twig中添加自定义过滤器(代码来自文档):
$filter = new Twig_SimpleFilter('rot13', function ($string) {
return str_rot13($string);
});
$app['twig']->addFilter($filter);
问题是当我添加这个过滤器时,我尝试使用这样的form_widget:
{{ form_widget(form._token) }}
引发异常:
Twig_Error_Syntax:过滤器" trans"在...中不存在 " form_div_layout.html.twig"在第75行
我尝试在互联网上找到的解决方案,如:
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'translator.messages' => array(),
));
但它不起作用,可能是因为我使用翻译提供程序翻译错误消息......
无论如何,添加一个过滤器不应该导致这种行为...
谢谢
答案 0 :(得分:2)
以Silex documentation show the following code为例:
$app['twig'] = $app->share($app->extend('twig', function($twig, $app) {
$twig->addGlobal('pi', 3.14);
$twig->addFilter('levenshtein', new \Twig_Filter_Function('levenshtein'));
return $twig;
}));
我认为您应该尝试以这种方式添加过滤器。
答案 1 :(得分:0)
我找到了解决方案:必须在TranslationServerProvider注册后添加addFilter。
按照我的顺序: