我创建了一个枝条延伸:
{{ image ("image.png", 200) }}
HI知道我可以做
{{ image ("image.png", 200)|raw }}
......但我宁愿使用PHP代码,使一切(从这个“形象”扩展名)没能逃脱。
我看不到这一点。
我知道我可以阻止所有输出转义枝杈,但我只是想这样一个扩展不是逃避输出,和其他一切这样做。
我创建了一个枝条延伸:
{{ image ("image.png", 200) }}
HI知道我可以做
{{ image ("image.png", 200)|raw }}
......但我宁愿使用PHP代码,使一切(从这个“形象”扩展名)没能逃脱。
我看不到这一点。
我知道我可以阻止所有输出转义枝杈,但我只是想这样一个扩展不是逃避输出,和其他一切这样做。
这可以通过添加完成一个选项的扩展注册。
public function getFilters(){
return array(
// ...
'image' => new \Twig_Filter_Method($this, 'imageFilter',
array('is_safe' => array('html'))
),
// ...
);
}
这将提供转义输入HTML和返回转义HTML输出。 如果您需要转义的HTML输入工作,看到选项'pre_escaped' => 'html'
。
对于树枝功能扩展做到这一点
public function getFunctions()
{
return array(
new \Twig_SimpleFunction(
'image',
array($this, 'image'),
array('is_safe' => array('html')))
);
}
我用一个函数
$twig->addFunction(new \Twig_SimpleFunction('html', function ($code) {
return new \Twig_Markup($code, "utf-8");
}));
{{ html(myhtmlcode) }}
在树枝第2版,你可以解决这个问题是这样的:
环境 :Symfony的4枝束^ 4.0
代码 :
public function getFilters(): array
{
return [,
new TwigFilter('image', [$this, 'image'], ['is_safe' => ['html']]),
];
}