我创建了一个自定义标签,它应该像这样工作:
{{ thumbnail(image.fullPath,620) }}
不幸的是,我不得不像那样使用它
{{ thumbnail(image.fullPath,620)|raw }}
有没有一种方法可以直接在树枝延伸处取消捕捉?
我的扩展注册缩略图代码如下:
public function getFunctions()
{
return array(
'thumbnail' => new Twig_Function_Method($this, 'thumbnail'),
);
}
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')
))
);
}
Crozin的答案是正确的,但由于Twig_Function_Method
现在已被弃用,您可以这样使用Twig_SimpleFunction
:
return [
new Twig_SimpleFunction('thumbnail', [$this, 'thumbnail'], [
'is_safe' => ['html']
]),
];
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;
}