手动渲染Twig字符串时禁用HTML转义

12
我有以下代码,可以将字符串呈现为HTML输出。我该如何使其不会将文本转换成HTML格式?
$template = '{{ who }} bar';
$params = array('who' => "Foo's");

$twig = new \Twig_Environment(new \Twig_Loader_String);
var_dump($twig->render($template, $params));

输出:

string(14) "Foo's bar"

我该如何使它输出这个结果?

string(14) "Foo's bar"

我知道将'{{ who }} bar'更改为'{{ who|raw }} bar'可以解决问题,但我希望在渲染阶段解决这个问题。我不想更改所有模板。


你想要全局禁用默认转义,还是只想呈现特定的参数不转义? - Gerry
不要改变问题。如Gerry所示,在Twig中全局关闭转义即可。我假设您根本没有生成HTML。 - Cerad
1
@Cerad 我没有编辑过它,这一点可以从修订历史记录中看出来。 - mattalxndr
1个回答

16

我研究了Twig的代码,并发现这样做可以正常工作:

$twig = new \Twig_Environment(new \Twig_Loader_String, array(
    'autoescape' => false
));

1
谢谢!真不敢相信这个解决方案没有更好的文档记录在某个地方... - sylbru
值得一提的是,Twig_Loader_String现已被弃用,应改用Twig_Loader_Array - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接