我创建了一个自定义标记,应该像这样工作:
{{ thumbnail(image.fullPath,620) }}
不幸的是我必须像那样使用它
{{ thumbnail(image.fullPath,620)|raw }}
有没有办法直接在树枝延伸中进行unescape?
我的扩展程序会像下面这样注册缩略图代码:
public function getFunctions()
{
return array(
'thumbnail' => new \Twig_Function_Method($this, 'thumbnail'),
);
}
答案 0 :(得分:60)
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')
))
);
}
答案 1 :(得分:9)
Crozin's answer是正确的,但由于\Twig_Function_Method
现已弃用,您可以使用\Twig_SimpleFunction
:
return [
new \Twig_SimpleFunction('thumbnail', [$this, 'thumbnail'], [
'is_safe' => ['html']
]),
];
答案 2 :(得分:3)
Twig是这样的:
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;
}