如何通过twig使用html实体来逃避整个块?

时间:2016-04-21 12:29:27

标签: php symfony twig html-entities html-encode

我想创建一个包含html编码块的xml输出。

这是我的小枝:

<rawXml>
    <message>
        {% autoescape 'html' %}
            <ThisShouldBeEscaped>
                <ButItIsnt>Dang</ButItIsnt>
            </ThisShouldBeEscaped>
        {% endautoescape %}
    </message>
</rawXml>

在渲染时,我希望通过这种方式将内容发送到html编码:

&lt;ThisShouldBeEscaped&gt;
    &lt;ButItIsnt&gt;Dang&lt;/ButItIsnt&gt;
&lt;/ThisShouldBeEscaped&gt;

但我得到了完整的原始XML响应:

<rawXml>
    <message>
        <ThisShouldBeEscaped>
            <ButItIsnt>Dang</ButItIsnt>
        </ThisShouldBeEscaped>
    </message>
</rawXml>

我做错了什么?

1 个答案:

答案 0 :(得分:2)

Twig默认情况下不会转义模板标记。如果您希望以这种方式转义HTML,请先将其设置为变量然后autoescape,或使用常规escape

<rawXml>
    <message>
        {% set myHtml %}
        <ThisShouldBeEscaped>
            <ButItIsnt>Dang</ButItIsnt>
        </ThisShouldBeEscaped>
        {% endset %}
        {% autoescape 'html' %}
            {{ myHtml }}
        {% endautoescape %}
        <!-- or -->
        {{ myHtml|escape }}
    </message>
</rawXml>