如何在Twig模板中转义Twig分隔符?

50

Twig 使用 {{ }}, {% %}, {# #} 作为定界符。

但是如何在 Twig 模板中显示 {{ }}? 我不是在说 HTML 转义。

我提出这个问题是因为我想在 Twig 模板中包含一个 Mustache 模板,以便我可以使用来自 AJAX 调用的数据进行填充。

3个回答

86

最简单的方法是使用变量表达式来输出变量分隔符({{):

{{ '{{' }}

当你需要转义太多内容时,可以使用一些替代方法,其中之一是原生块(自1.12起使用 verbatim):

{% raw %}
    <ul>
    {% for item in seq %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
{% endraw %}

实际上,它已经被文档化得相当完善了。


谢谢,我在文档中找了但没看到。raw是解决这个问题的完美方案。 - Michaël Perrin
6
现在已经弃用了"raw"标签,使用"verbatim"标签取而代之。 - DMTintner
1
{{ '{{' }} foo {{ '}}' }} 使用Twig渲染Twig以渲染Twig以渲染.... - Petah
2
在Twig2中,标签现在是{{ verbatim }}{{ endverbatim }} - alttag
4
不,这些标签实际上是 {% verbatim %} 和 {% endverbatim %}。 - Brian Peterson

16

Twig文档提供了两种建议。第一种方法是直接输出字符串:

{{ '{{' }}
否则,如果你想输出一个长的部分(听起来你是这样做的),你可以使用raw标签
{% raw %}
    your mustache content here
{% endraw %}

raw is now verbatim. This changed in Twig version 1.12 (as of writing, 3.x is common). So: {% verbatim %}your mustache content here{% endverbatim %} - ianp

-1
{% block body %} 
<table class="table table-striped"> 
    {% for temp in data %} 
    <tr> 
        <td>{{temp.fname}}</td> 
        <td>{{temp.lname}}</td> 
    </tr> 
    {% endfor %}
</table>
{% endblock %} 

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