Wie zeige ich eine Zeichenfolge an, die HTML in einer Zweigvorlage enthält?

164

Wie kann ich eine Zeichenfolge anzeigen, die HTML-Tags in einer Zweigvorlage enthält?

Meine PHP-Variable enthält dieses HTML und diesen Text:

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

Wenn ich das in meiner Zweigvorlage mache:

{{ word }}

Ich verstehe das:

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

Ich möchte dies stattdessen:

<b> a word </b>

Ist es möglich, dies leicht zu bekommen?

Gildas Ross
quelle
Ich werde dies nicht als Antwort hinzufügen, aber ein alternativer Ansatz für Personen, die diese Frage beantworten, besteht darin, Werte in Markdown zu speichern , wie dies bei StackOverflow der Fall ist . Dann könnten Sie einen Zweigfilter mit automatischer Escape-Funktion erstellen , da Sie darauf vertrauen können, dass HTML sicher ist. Nicht rawerforderlich, und Ihre gespeicherten Werte sind für Menschen lesbar!
Rybo111

Antworten:

368

Verwenden Sie das rohe Schlüsselwort http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}
Aurimas Ličkus
quelle
1
Beim Ersetzen funktioniert es bei mir nicht. {{word | Ersetzen ({(word_to_replace): '<b>' ~ (word_to_replace) ~ '</ b>'}) | raw}} Irgendeine Idee?
Honesta
2
UPDATE: Ich habe es gelöst, indem ich es mit 'set' und dann {{word | zu einer anderen Variablen hinzugefügt habe raw}} funktioniert gut.
Honesta
77

Sie können auch verwenden:

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

so dass nur <b>tag erlaubt ist.

Shimon S.
quelle
6
Ich würde sagen, diese Version ist vorzuziehen, wenn Sie nur wenige Tags zulassen möchten.
KalenGi
3
Was mich auslöste, war, dass ich "roh" zuletzt setzen musste - ich würde es zuerst setzen.
Ben Y
Wie erlaubst du mehrere Tags?
Riki137
32
{{ word|striptags('<b>,<a>,<pre>')|raw }}

Wenn Sie mehrere Tags zulassen möchten

musicjerm
quelle
0

Wenn Sie keine Variable benötigen, können Sie Text in
translations / messages.en.yaml definieren :
CiteExampleHtmlCode: "<b> my static text </b>"

Verwenden Sie es dann mit twig:
templates / about / index.html.twig
… {{ 'CiteExampleHtmlCode' }}
oder wenn Sie mehrere Sprachen wie mich benötigen:
… {{ 'CiteExampleHtmlCode' | trans }}

Lassen Sie uns einen Blick von https://symfony.com/doc/current/translation.html Weitere Informationen zu Übersetzungen Verwendung.

bcag2
quelle