Jak wyświetlić ciąg zawierający kod HTML w szablonie twig?

164

Jak mogę wyświetlić ciąg zawierający tagi HTML w szablonie twig?

Moja zmienna PHP zawiera ten kod HTML i tekst:

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

Kiedy robię to w moim szablonie gałązki:

{{ word }}

Rozumiem:

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

Zamiast tego chcę:

<b> a word </b>

Czy można to łatwo uzyskać?

Gildas Ross
źródło
Nie dodam tego jako odpowiedzi, ale alternatywnym podejściem dla osób, które sięgają po to pytanie, jest przechowywanie wartości w Markdown , tak jak robi to StackOverflow . Następnie możesz utworzyć filtr Twig z automatyczną ucieczką , ponieważ możesz ufać, że HTML jest bezpieczny. Nie rawpotrzeba, a zapisane wartości są czytelne dla człowieka!
rybo111

Odpowiedzi:

368

Użyj surowego słowa kluczowego, http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}
Aurimas Ličkus
źródło
1
Podczas wymiany nie działa dla mnie. {{słowo | replace ({(word_to_replace): '<b>' ~ (word_to_replace) ~ '</b>'}) | raw}} Masz jakiś pomysł?
Honesta
2
AKTUALIZACJA: Rozwiązałem to, dodając go do innej zmiennej za pomocą 'set', a następnie {{word | raw}} działa dobrze.
Honesta
77

Możesz także użyć:

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

tak, że tylko <b>tag będzie dozwolony.

Shimon S.
źródło
6
Powiedziałbym, że ta wersja jest lepsza, jeśli chcesz zezwolić tylko na kilka tagów.
KalenGi
3
To, co mnie zaskoczyło, to konieczność umieszczenia „surowego” na końcu - postawiłem to na pierwszym miejscu.
Ben Y,
Jak zezwolić na wiele tagów?
Riki137
32
{{ word|striptags('<b>,<a>,<pre>')|raw }}

jeśli chcesz zezwolić na wiele tagów

musicjerm
źródło
0

jeśli nie potrzebujesz zmiennej, możesz zdefiniować tekst w
tłumaczenia / wiadomości.pl.yaml :
CiteExampleHtmlCode: "<b> my static text </b>"

następnie użyj go z twig:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
lub jeśli potrzebujesz multilangages, takich jak ja:
… {{ 'CiteExampleHtmlCode' | trans }}

Rzućmy okiem na https://symfony.com/doc/current/translation.html, aby uzyskać więcej informacji o używaniu tłumaczeń.

bcag2
źródło