在Twig函数扩展中防止输出转义

时间:2013-03-31 13:47:01

标签: symfony twig

我创建了一个Twig扩展名:

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

我知道我可以做到

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

...但我更喜欢使用PHP代码,以便所有内容(来自此'图片'扩展名)都不会被转义。

我看不出这种可能。

我知道我可以阻止Twig中的所有输出转义,但我只想让这一个扩展不要转义输出,其他一切都要这样做。

4 个答案:

答案 0 :(得分:32)

可以通过在分机注册时添加an option来完成此操作。

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

这将提供未转义的输入HTML并返回未转义的HTML输出。如果您需要使用转义的HTML输入,请参阅选项'pre_escaped' => 'html'

答案 1 :(得分:10)

对于twig功能扩展,请执行此操作

public function getFunctions()
{
  return array(
     new \Twig_SimpleFunction(
        'image', 
        array($this, 'image'), 
        array('is_safe' => array('html')))
  );
}

答案 2 :(得分:1)

我使用了一个函数

$twig->addFunction(new \Twig_SimpleFunction('html', function ($code) {
   return new \Twig_Markup($code, "utf-8");
}));
{{ html(myhtmlcode) }}

答案 3 :(得分:0)

在树枝版本2中,您可以像这样解决它:

环境:     Symfony 4和树枝束^ 4.0

代码

{{1}}