2012-03-09 3 views
18

をエスケープしないようにカスタム小枝タグを伝えるために、私はそのように動作するはずカスタムタグを作成:Symfony2の/小枝は:どのように出力

{{ thumbnail(image.fullPath,620) }} 

は、残念ながら私はその

{{ thumbnail(image.fullPath,620)|raw }} 
ようにそれを使用する必要があります

枝延長部に直接エスケープする方法はありますか?

私の拡張は、このようなサムネイルコードを登録:

public function getFunctions() 
    { 
     return array(
      'thumbnail' => new \Twig_Function_Method($this, 'thumbnail'), 
     ); 
    } 

答えて

57

Twig_Function_Method::__construct()の3番目の引数が関数のオプションの配列です。これらのオプションの一つは、機能は「安全な」HTML/JavaScriptコードを出力するかどうかを指定するis_safeです:

class Twig_Extension_Escaper extends Twig_Extension 
{ 
... 
    public function getFilters() 
    { 
     return array(
      new Twig_SimpleFilter('raw', 'twig_raw_filter', array('is_safe' => array('all'))), 
     ); 
    } 
... 
} 
... 

function twig_raw_filter($string) 
{ 
    return $string; 
} 
+0

ありがとうございました。これは文書で指定されていますか?私はそれを見つけることができませんでしたが、おそらく私は十分に見苦しくなかったでしょう。 –

+1

@StephenOrrはCrozinの答えのリンクを参照してください。 – acme

+0

ありがとう、それは私を助けた$)これのマニュアルへのリンクを追加できますか?もっと多くの 'html'オプションが何であるかを知りたい – user1954544

3

小枝はこのようにそれをしません\Twig_SimpleFunctionを次のように使用してください。

return [ 
    new \Twig_SimpleFunction('thumbnail', [$this, 'thumbnail'], [ 
     'is_safe' => ['html'] 
    ]), 
]; 
8

Crozin's answerが正しいですが、\Twig_Function_Methodが廃止されるため、次のことができます。

public function getFunctions() 
{ 
    return array(
     'thumbnail' => new \Twig_Function_Method($this, 'thumbnail', array(
      'is_safe' => array('html') 
     )) 
    ); 
} 
関連する問題