Symfony2/Twig:如何告诉自定义twig标签不要逃避输出

sto*_*fln 19 templates symfony twig

我创建了一个自定义标签,它应该像这样工作:

{{ thumbnail(image.fullPath,620) }}
Run Code Online (Sandbox Code Playgroud)

不幸的是我必须像那样使用它

{{ thumbnail(image.fullPath,620)|raw }}
Run Code Online (Sandbox Code Playgroud)

有没有办法直接在树枝延伸中进行unescape?

我的扩展程序注册缩略图代码如下:

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

Cro*_*zin 62

第三个参数Twig_Function_Method::__construct()是函数的一个选项数组.其中一个选项是is_safe指定函数是否输出"安全"的HTML/JavaScript代码:

public function getFunctions()
{
    return array(
        'thumbnail' => new \Twig_Function_Method($this, 'thumbnail', array(
            'is_safe' => array('html')
        ))
    );
}
Run Code Online (Sandbox Code Playgroud)


jcr*_*oll 9

Crozin的答案是正确的,但因为\Twig_Function_Method现在已弃用,您可以这样使用\Twig_SimpleFunction:

return [
    new \Twig_SimpleFunction('thumbnail', [$this, 'thumbnail'], [
        'is_safe' => ['html']
    ]),
];
Run Code Online (Sandbox Code Playgroud)