¿Cómo mostrar una cadena que contiene HTML en la plantilla de ramita?

164

¿Cómo puedo mostrar una cadena que contiene etiquetas HTML en la plantilla de ramita?

Mi variable PHP contiene este html y texto:

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

Cuando hago esto en mi plantilla de ramita:

{{ word }}

Entiendo esto:

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

Quiero esto en su lugar:

<b> a word </b>

¿Es posible obtener esto fácilmente?

Gildas Ross
fuente
No agregaré esto como respuesta, pero un enfoque alternativo para las personas que llegan a esta pregunta es almacenar valores en Markdown , como lo hace StackOverflow . Entonces podría crear un filtro Twig con escape automático , ya que puede confiar en que el HTML estará seguro. ¡No es rawnecesario, y sus valores almacenados son legibles por humanos!
rybo111

Respuestas:

368

Utilice la palabra clave en bruto, http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}
Aurimas Ličkus
fuente
1
Al hacer un reemplazo no me funciona. {{word | reemplazar ({(word_to_replace): '<b>' ~ (word_to_replace) ~ '</b>'}) | raw}} ¿Alguna idea?
Honesta
2
ACTUALIZACIÓN: Lo resolví agregándolo a otra variable usando 'set', luego {{word | raw}} funciona bien.
Honesta
77

También puedes usar:

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

para que solo <b>se permita la etiqueta.

Shimon S
fuente
66
Diría que esta versión es preferible si desea permitir solo unas pocas etiquetas.
KalenGi
3
Lo que me hizo tropezar fue la necesidad de poner "crudo" al final, lo pondría primero.
Ben Y
¿Cómo se permiten múltiples etiquetas?
Riki137
32
{{ word|striptags('<b>,<a>,<pre>')|raw }}

si quieres permitir múltiples etiquetas

musicjerm
fuente
0

si no necesita variable, puede definir texto en
traducciones / mensajes.en.yaml :
CiteExampleHtmlCode: "<b> my static text </b>"

luego úselo con twig:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
o si necesita varios idiomas como yo:
… {{ 'CiteExampleHtmlCode' | trans }}

Echemos un vistazo a https://symfony.com/doc/current/translation.html para obtener más información sobre el uso de las traducciones.

bcag2
fuente