Twig избегая html, если стенография? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть кусок шаблона следующим образом:

<div class="reply_text"><div class="wall_reply_text">
    {{ reply.comment_text is empty ? '<div class="has-text-grey-light">This comment is empty.</div>' : reply.comment_text }}
</div></div>

Вместо того, чтобы показывать This comment is empty. с использованием класса has-text-grey-light, он буквально показывает этот неэкранированный текст: <div class="has-text-grey-light">This comment is empty.</div>.

Я полагаю, что ранее я уже делал подобные вещи, и он выводил правильно. Что здесь не так?

1 Ответ

1 голос
/ 07 марта 2019

Попробуйте 'raw' filter.

{{ var|raw }} {# var won't be escaped #}
{{ (true ? '<b>Hello 1</b>' : '<p>Hello 2</p>')|raw }}

Необработанный фильтр помечает значение как «безопасное», что означает, что в среде с включенным автоматическим экранированием эта переменная не будет экранирована, если для него был применен последний фильтр:

<div class="reply_text">
    <div class="wall_reply_text">
        {{ (reply.comment_text is empty ? '<div class="has-text-grey-light">This comment is empty.</div>' : reply.comment_text) | raw }}
    </div>
</div>

Другой способ - использование оператора if else, когда вам не нужно использовать необработанный фильтр.

{% if reply.comment_text is empty %}
    <div class="has-text-grey-light">This comment is empty.</div>
{% else %}
    {{ reply.comment_text }} {# if required {{ reply.comment_text | raw }} #}
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...