Как отобразить строку, содержащую HTML, в шаблоне веточки?

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

Моя переменная PHP содержит этот html и текст:

$word = '<b> a word </b>';

Когда я делаю это в своем шаблоне веточки:

{{ word }}

Я получаю это:

&lt;b&gt; a word &lt;b&gt;

Вместо этого я хочу это:

<b> a word </b>

Возможно ли это легко получить?


person Gildas Ross    schedule 02.12.2011    source источник
comment
Я не буду добавлять это в качестве ответа, но альтернативный подход для людей, задающих этот вопрос, - хранить значения в Markdown, как StackOverflow. Затем вы можете создать фильтр Twig с автоматическим экранированием , поскольку вы можете быть уверены в безопасности HTML. raw не требуется, и ваши сохраненные значения доступны для чтения человеком!   -  person rybo111    schedule 16.07.2019


Ответы (4)


Используйте необработанное ключевое слово, http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}
person Aurimas Ličkus    schedule 02.12.2011
comment
При замене у меня не работает. {{слово | заменить ({(word_to_replace): '‹b›' ~ (word_to_replace) ~ '‹/b›'}) | raw}} Есть идеи? - person Honesta; 13.10.2016
comment
ОБНОВЛЕНИЕ: я решил это, добавив его к другой переменной с помощью 'set', затем {{word | raw}} работает нормально. - person Honesta; 13.10.2016

Вы также можете использовать:

{{ word|striptags('<b>')|raw }}

так что будет разрешен только тег <b>.

person Shimon S    schedule 08.05.2012
comment
Я бы сказал, что эта версия предпочтительнее, если вы хотите разрешить только несколько тегов. - person KalenGi; 19.07.2014
comment
Что меня сбило с толку, так это то, что сырье нужно было положить последним - я бы поставил его первым. - person Ben Y; 09.04.2016
comment
Как разрешить использование нескольких тегов? - person Riki137; 27.05.2016

{{ word|striptags('<b>,<a>,<pre>')|raw }}

если вы хотите разрешить несколько тегов

person musicjerm    schedule 09.06.2016

если вам не нужна переменная, вы можете определить текст в
translations / messages.en.yaml:
CiteExampleHtmlCode: "<b> my static text </b>"

затем используйте его с twig:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
или, если вам нужны многоязычные языки, как у меня:
… {{ 'CiteExampleHtmlCode' | trans }}

Давайте посмотрим на https://symfony.com/doc/current/translation.html для получения дополнительной информации об использовании переводов.

person bcag2    schedule 01.07.2020