Twig是否以简写形式转义html?

时间:2019-03-06 21:31:23

标签: html twig

我有一块模板,如下:

<div class="reply_text"><div class="wall_reply_text">
    {{ reply.comment_text is empty ? '<div class="has-text-grey-light">This comment is empty.</div>' : reply.comment_text }}
</div></div>

它没有使用类This comment is empty.来显示has-text-grey-light,而是从字面上显示了此未转义的文本:<div class="has-text-grey-light">This comment is empty.</div>

我相信以前我已经做过类似的事情,并且输出正确。怎么了?

1 个答案:

答案 0 :(得分:1)

尝试使用'raw'过滤器。

{{ var|raw }} {# var won't be escaped #}
{{ (true ? '<b>Hello 1</b>' : '<p>Hello 2</p>')|raw }}

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

<div class="reply_text">
    <div class="wall_reply_text">
        {{ (reply.comment_text is empty ? '<div class="has-text-grey-light">This comment is empty.</div>' : reply.comment_text) | raw }}
    </div>
</div>

另一种方法是在不需要使用原始过滤器的地方使用if else语句。

{% if reply.comment_text is empty %}
    <div class="has-text-grey-light">This comment is empty.</div>
{% else %}
    {{ reply.comment_text }} {# if required {{ reply.comment_text | raw }} #}
{% endif %}