Come visualizzare una stringa che contiene HTML nel modello di ramoscello?


164

Come posso visualizzare una stringa che contiene tag HTML nel modello di ramoscello?

La mia variabile PHP contiene questo html e questo testo:

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

Quando lo faccio nel mio modello di ramoscello:

{{ word }}

Capisco questo:

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

Voglio questo invece:

<b> a word </b>

È possibile ottenerlo facilmente?


Non aggiungerò questo come risposta, ma un approccio alternativo per le persone che raggiungono questa domanda è quello di archiviare i valori in Markdown , come fa StackOverflow . Quindi potresti creare un filtro Twig con escape automatico , poiché puoi fidarti dell'HTML per essere sicuro. Non è rawnecessario e i valori memorizzati sono leggibili dall'uomo!
Rybo111,

Risposte:



77

Puoi anche usare:

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

in modo che <b>sia consentito solo il tag.


6
Direi che questa versione è preferibile se si desidera consentire solo alcuni tag.
KalenGi,

3
Ciò che mi ha fatto scattare è stato il bisogno di mettere "grezzo" per ultimo - lo metterei per primo.
Ben Y,

Come si consentono più tag?
Riki137,

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

se si desidera consentire più tag


0

se non hai bisogno di variabili, puoi definire il testo in
translate / messages.en.yaml :
CiteExampleHtmlCode: "<b> my static text </b>"

quindi usalo con ramoscello:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
o se hai bisogno di più lingue come me:
… {{ 'CiteExampleHtmlCode' | trans }}

Diamo un'occhiata a https://symfony.com/doc/current/translation.html per ulteriori informazioni sull'uso delle traduzioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.