我创建了一个Twig扩展名:
{{ image ("image.png", 200) }}
我知道我可以做到
{{ image ("image.png", 200)|raw }}
...但我更喜欢使用PHP代码,以便所有内容(来自此'图片'扩展名)都不会被转义。
我看不出这种可能。
我知道我可以阻止Twig中的所有输出转义,但我只想让这一个扩展不要转义输出,其他一切都要这样做。
答案 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}}