¿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?


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:



77

También puedes usar:

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

para que solo <b>se permita la etiqueta.


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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.