2012-09-28 30 views
3

所以我對Symfony2非常陌生,我試圖在樹枝模板中使用camelize過濾器。然而,當我請求的頁面,我得到一個錯誤,指出該過濾器不存在:Symfony2中的Twig CamelCase過濾器

過濾器「camelize」不存在:: base.html.twig

這裏的行從我的模板文件:

{{'hello world'| camelize}}

該過濾器已列在Twig的quick reference page上。

我很困惑,Symfony2不支持所有的樹枝過濾器嗎?似乎有不少失蹤者,爲什麼?如果它不支持它們,那麼有什麼方法可以添加缺少的?

在此先感謝!

編輯好吧,所以事實證明我被推遲了,我需要記得檢查我確實已經有了正確的git項目。難怪我很困惑。謝謝回覆!

+0

我不知道你在哪裏得到那個參考頁面,但這似乎並不是正確的Twig。 – Squazic

回答

8

您的鏈接指向GitHub上的分支,意思是原始項目的修改副本。原來的項目是https://github.com/fabpot/Twig

Twig中沒有camelize過濾器。內置過濾器是here。你可以編寫你自己的camilize過濾器(這很簡單,實際上...)遵循本教程:How to write a custom Twig Extension

編輯:只是爲了好玩,你可以寫這樣的:

class MyTwigExtension extends Twig_Extension 
{ 
    public function getFilters() 
    { 
     return array(
      'camelize' => new Twig_Filter_Method($this, 'camelizeFilter'), 
     ); 
    } 

    public function camelizeFilter($value) 
    { 
     if(!is_string($value)) { 
      return $value; 
     } 

     $chunks = explode(' ', $value); 
     $ucfirsted = array_map(function($s) { return ucfirst($s); }, $chunks); 

     return implode('', $ucfirsted); 
    } 

    public function getName() 
    { 
     return 'my_twig_extension'; 
    } 
} 

注意,這是一個快速和骯髒的過濾器!看看內置的過濾器來學習最佳實踐!

+1

學說的'Inflector'類有'camelize'方法,你可以用它來代替自己寫,但是它和你寫的一樣。 –

7

Symfony的2有標題過濾器駝峯使用

{{ entity.yourstring | title }} 

駱駝情況下,你的字符串