2014-06-24 53 views
0

我想我在Silex Twig Provider中發現了一個錯誤。 我試圖在嫩枝添加自定義過濾器(代碼是從文檔):Silex/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:過濾器 「反式」 不 「form_div_layout.html.twig」 在行存在75

我試圖在互聯網上找到類似的解決方案:

$app->register(new Silex\Provider\TranslationServiceProvider(), array(
    'translator.messages' => array(), 
)); 

,但它不工作,也許是因爲我用的是翻譯提供翻譯的錯誤信息......

總之,添加過濾器不應該造成這種行爲......

謝謝

回答

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; 
})); 

我認爲你應該嘗試以這種方式添加過濾器。

+0

你的解決方案比我的更好。它修復了另一個問題。謝謝拉爾夫。 –

0

我找到了解決方案:addFilter必須TranslationServ後添加erProvider註冊。

在爲了我有:

  1. FormServiceProvider
  2. TwigServiceProvider
  3. TranslationServiceProvider
  4. addFilter
相關問題