我尝试在symfony2中发送一个html代码,如下所示:
public function testAction()
{
$html = '<input type="text">'
return $this->render('TestBundle:Default:index.htlm.twig',array(
'html' => $html,
));
}
当我在页面index.html.twig中使用html变量时:{{ html }}
结果是
<input type="text">
但我不想要这个结果。我想要的结果是页面index.html.twig显示输入(文本区域)。
答案 0 :(得分:1)
来自文档的回答:http://twig.sensiolabs.org/doc/api.html#escaper-extension
escaper扩展添加了自动输出转义到Twig。它定义了一个标签,autoescape和一个过滤器raw。
创建escaper扩展时,您可以打开或关闭全局输出转义策略:
$escaper = new Twig_Extension_Escaper('html');
$twig->addExtension($escaper);
如果设置为html,模板中的所有变量都会被转义(使用html转义策略),但使用原始过滤器的变量除外:
{{ article.to_html|raw }}
您还可以使用autoescape标记在本地更改转义模式(有关在Twig 1.8之前使用的语法,请参阅autoescape文档):
{% autoescape 'html' %}
{{ var }}
{{ var|raw }} {# var won't be escaped #}
{{ var|escape }} {# var won't be double-escaped #}
{% endautoescape %}