Как избежать всего блока с html-сущностями через веточку?

Я хочу создать вывод XML, который содержит HTML-кодированный блок.

Это мой фрагмент ветки:

<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>

Что я делаю неправильно?

2

Решение

Twig по умолчанию не экранирует разметку шаблона. Если вы хотите экранировать свой HTML таким образом, сначала установите его в переменную, а затем либо autoescape это или использовать обычный escape:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]