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?


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:



77

Sie können auch verwenden:

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

so dass nur <b>tag erlaubt ist.


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.