29

Twig 拡張機能を作成しました。

{{ image ("image.png", 200) }}

こんにちは、私はただできることを知っています

{{ image ("image.png", 200)|raw }}

...しかし、(この「イメージ」拡張機能からの) すべてがエスケープされないように、PHP コードを使用したいと思います。

これが可能だとは思えません。

Twig ですべての出力のエスケープを防止できることはわかっていますが、この 1 つの拡張機能だけで出力をエスケープしないようにし、他のすべての拡張機能でエスケープしないようにしたいだけです。

4

4 に答える 4

43

これは、拡張機能の登録時にオプションを追加することで実行できます。

public function getFilters(){
    return array(
        // ...
        'image' => new \Twig_Filter_Method($this, 'imageFilter',
            array('is_safe' => array('html'))
        ),
        // ...
    );
}

これにより、エスケープされていない入力 HTML が提供され、エスケープされていない HTML 出力が返されます。エスケープされた HTML 入力を使用する必要がある場合は、オプションを参照してください'pre_escaped' => 'html'

于 2013-03-31T14:12:00.883 に答える
14

小枝機能拡張の場合、これを行います

public function getFunctions()
{
  return array(
     new \Twig_SimpleFunction(
        'image', 
        array($this, 'image'), 
        array('is_safe' => array('html')))
  );
}
于 2014-10-16T06:19:09.433 に答える