小胡子和树枝:没有逃脱 HTML
Mustache and Twig: not escaping HTML
我结合了 Twig 和 Mustache。因为他们都使用相同的书签标签
{{ var }}
我更改了 Mustache 标签,像这样
Mustache.parse(template, ['${', '}']);
所以我在 Mustache 中使用了这个书签
${ var }
并且没有冲突。
当我需要告诉 Mustache 不要转义时,问题就出现了 HTML。正如 Documentation 所说,我要使用
{{{ do_not_escape_this_var }}}
但这会导致与Twig发生冲突!而且好像没办法定制。
我知道我可以覆盖 Twig 的书签,但这对前端团队不利,因为他们习惯了 Twig 默认标签。
有什么解决办法吗?谢谢
如Twig's documentation所说,代码可以这样转义:
{{ '{{{ do_not_escape_this_var }}}' }}
对于较大的代码块,您可以使用 verbatim 来防止 Twig 将 Mustache 代码解析为 Twig 代码:
{% verbatim %}
{{{ do_not_escape_this_var }}}
{% endverbatim %}
通过逐字逐句,您还可以避免使用默认的 Mustache 标签解析 Mustache 代码块:
{% verbatim %}
<h1>Hello {{ name }}!</h1>
<p>How are you {{ today }}?</p>
{{! This is just Mustache, not Twig }}
{% endverbatim %}
当然,那你就不能在{% verbatim %}
和{% endverbatim %}
之间使用Twig了。我不认为这是一个问题,因为混合 Mustache(带有默认标签)和 Twig 代码会非常混乱。
我结合了 Twig 和 Mustache。因为他们都使用相同的书签标签
{{ var }}
我更改了 Mustache 标签,像这样
Mustache.parse(template, ['${', '}']);
所以我在 Mustache 中使用了这个书签
${ var }
并且没有冲突。 当我需要告诉 Mustache 不要转义时,问题就出现了 HTML。正如 Documentation 所说,我要使用
{{{ do_not_escape_this_var }}}
但这会导致与Twig发生冲突!而且好像没办法定制。
我知道我可以覆盖 Twig 的书签,但这对前端团队不利,因为他们习惯了 Twig 默认标签。
有什么解决办法吗?谢谢
如Twig's documentation所说,代码可以这样转义:
{{ '{{{ do_not_escape_this_var }}}' }}
对于较大的代码块,您可以使用 verbatim 来防止 Twig 将 Mustache 代码解析为 Twig 代码:
{% verbatim %}
{{{ do_not_escape_this_var }}}
{% endverbatim %}
通过逐字逐句,您还可以避免使用默认的 Mustache 标签解析 Mustache 代码块:
{% verbatim %}
<h1>Hello {{ name }}!</h1>
<p>How are you {{ today }}?</p>
{{! This is just Mustache, not Twig }}
{% endverbatim %}
当然,那你就不能在{% verbatim %}
和{% endverbatim %}
之间使用Twig了。我不认为这是一个问题,因为混合 Mustache(带有默认标签)和 Twig 代码会非常混乱。