Я хочу создать вывод XML, который содержит HTML-кодированный блок.
Это мой фрагмент ветки:
<rawXml>
<message>
{% autoescape 'html' %}
<ThisShouldBeEscaped>
<ButItIsnt>Dang</ButItIsnt>
</ThisShouldBeEscaped>
{% endautoescape %}
</message>
</rawXml>
При рендеринге я ожидал, что содержимое сообщения будет закодировано в формате html следующим образом:
<ThisShouldBeEscaped>
<ButItIsnt>Dang</ButItIsnt>
</ThisShouldBeEscaped>
все же я получаю полный сырой XML-ответ:
<rawXml>
<message>
<ThisShouldBeEscaped>
<ButItIsnt>Dang</ButItIsnt>
</ThisShouldBeEscaped>
</message>
</rawXml>
Что я делаю неправильно?
Twig по умолчанию не экранирует разметку шаблона. Если вы хотите экранировать свой HTML таким образом, сначала установите его в переменную, а затем либо autoescape
это или использовать обычный escape
:
<rawXml>
<message>
{% set myHtml %}
<ThisShouldBeEscaped>
<ButItIsnt>Dang</ButItIsnt>
</ThisShouldBeEscaped>
{% endset %}
{% autoescape 'html' %}
{{ myHtml }}
{% endautoescape %}
<!-- or -->
{{ myHtml|escape }}
</message>
</rawXml>
Других решений пока нет …