Como exibir a string que contém HTML no modelo de galho?

164

Como posso exibir uma string que contém tags HTML no modelo de galho?

Minha variável PHP contém este html e texto:

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

Quando faço isso no meu modelo de galho:

{{ word }}

Eu entendi isso:

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

Eu quero isso:

<b> a word </b>

É possível obter isso facilmente?

Gildas Ross
fonte
Não adicionarei isso como resposta, mas uma abordagem alternativa para as pessoas que chegam a essa pergunta é armazenar valores no Markdown , como o StackOverflow . Em seguida, você pode criar um filtro Twig com escape automático , pois você pode confiar no HTML como seguro. Não é rawnecessário, e seus valores armazenados são legíveis por humanos!
rybo111

Respostas:

368

Use a palavra-chave bruta, http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}
Aurimas Ličkus
fonte
1
Ao fazer uma substituição, não está funcionando para mim. {{word | substituir ({(word_to_replace): '<b>' ~ (word_to_replace) ~ '</b>'}) | bruto}} Alguma ideia?
Honesta #
2
UPDATE: Eu resolvi adicionando-o a outra variável usando 'set' e, em seguida, {{word | Raw}} funciona bem.
Honesta
77

Você também pode usar:

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

para que apenas a <b>tag seja permitida.

Shimon S
fonte
6
Eu diria que esta versão é preferível se você deseja permitir apenas algumas tags.
KalenGi
3
O que me fez tropeçar foi precisar colocar "cru" por último - eu o colocaria primeiro.
Ben Y
Como você permite várias tags?
Riki137 27/05
32
{{ word|striptags('<b>,<a>,<pre>')|raw }}

se você deseja permitir várias tags

musicjerm
fonte
0

se você não precisa de variável, pode definir o texto em
traduções / messages.en.yaml :
CiteExampleHtmlCode: "<b> my static text </b>"

use-o com twig:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
ou se você precisar de vários idiomas como eu:
… {{ 'CiteExampleHtmlCode' | trans }}

Vamos dar uma olhada em https://symfony.com/doc/current/translation.html para obter mais informações sobre o uso de traduções.

bcag2
fonte