Twig模板-如何在Twig模板中呈现HTML

5

我只是试图通过twig使我的分页脚本工作。 当我将php变量的结果作为twig变量{{pagination}}发送到twig中时,它会显示原始的HTML代码:

Page <strong>3</strong> of 4&nbsp; &nbsp; &nbsp; &nbsp; <a href="/search.php?pn=2"> Back</a> 
<span class="paginationNumbers">&nbsp; <a href="/search.php?pn=2">2</a> &nbsp;&nbsp; 
<span class="pagNumActive">3</span> &nbsp;&nbsp; <a href="/search.php?pn=4">4</a> &nbsp;
</span>&nbsp; <a href="/search.php?pn=4"> Next</a> 

现在我该如何渲染这些HTML标签呢?
3个回答

12

可能开启了自动转义。 您可以查看Twig的autoescape参数

您可以尝试将您的代码包裹在{% autoescape false %}{% endautoescape %}之间。


1
虽然这个方法可行,但我决定使用@nostrzak的解决方案,并使用“| raw”过滤器,因为它更细粒度,可以应用于单个变量使用,同时保留所有其他内容并安全转义。 - Eduard Sukharev
2
至今仍然有效 ❤️ - Ignacio Correia

8

使用{{ pagination | raw }}来输出内容。

根据官方文档:

raw 过滤器将值标记为“安全”,这意味着在启用自动转义的环境中,如果 raw 是应用于该变量的最后一个过滤器,则不会对该变量进行转义。


是的,我在搜索可能的解决方案时偶然发现了这个问题。不知为何,无论我是否使用原始过滤器,它都无法正常工作。 - Upment
1
对我来说,这个方法非常有效。例如,如果要将字符串中的所有空格替换为NBSP,则需要使用stringVariable|replace({' ': '&nbsp;'})|raw。顺便说一句,replace(' ', '&nbsp;')(使用两个参数而不是单个字典)对我也没有起作用。 - Eduard Sukharev
我需要在不修改模板的情况下避免自动转义,只需基于内容进行操作。 - TexWiller
我需要在不修改模板的情况下避免自动转义,仅基于如下内容: 变量x = "{%autoescape false%}abc{%endautoescape%}"。 显然这种方法行不通,但是我不能修改该模板。它是一个打印简单表格的宏,我不知道哪些内容应该在渲染模板之前不进行转义。 应该有一个类似render(x)的函数可以实现此功能。 - TexWiller

3
我曾在你的两个标签之间使用了这个。
{% autoescape false %} 
{{ body }}
{% endautoescape %}

它对我有效


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