Wie erhalte ich den Rohfeldwert in einer Zweigvorlage?

27

MeinFeld ist ein Klartextfeld. {{ content.field_myfield }}Rendert das Feld mit HTML-Markup und der Feldbezeichnung.

Wie rendere ich den Rohwert des Feldes? {{ content.field_myfield.value }}funktioniert nicht

Pim
quelle

Antworten:

45

{{ entity.field_name.value }} Um den wahren Rohwert zu erhalten, werden Tags und Codierungen eingeschlossen.

  • Beispiel: {{ node.body.value }}
  • Ergebnis: <p>Batman &amp; Robin</p>

{{ content.field_name.0 }} um den Rohwert abzüglich Tags und Codierung zu erhalten.

  • Beispiel: {{ content.body.0 }}
  • Ergebnis: Batman & Robin

roh

Dieser Filter sollte nach Möglichkeit vermieden werden, insbesondere wenn Sie Daten ausgeben, die vom Benutzer eingegeben werden können. Auf dieser Seite finden Sie weitere Informationen zur automatischen Flucht in Drupal 8.

Quelle: Filter - Ändern von Variablen in Zweigvorlagen

Der Raw-Filter markiert den Wert als "sicher". Dies bedeutet, dass in einer Umgebung mit aktivierter automatischer Escape-Funktion diese Variable nicht maskiert wird, wenn Raw der letzte auf sie angewendete Filter ist

Quelle: Twigs offizielle Dokumente


Zum Beispiel können Sie verwenden:

{{ node.body.value|striptags }}
{{ paragraph.field_text.value|striptags }}

Das Problem bei der Verwendung der | Striptags von twig ist die doppelte Codierung von HTML-Entitäten, nicht von Markup. Daher wird & zu & und dann & amp; - Berdir

Kein Sssweat
quelle
6
Die inhaltlichen Beispiele sind nicht korrekt. Siehe drupal.stackexchange.com/questions/198694/… . Was Sie verwenden können, ist content.field_text.0. Dann erhalten Sie nur den inneren Teil des ersten Feldelements ohne die Feldvorlagen. Dies ist besonders nützlich für Listen, Referenzen usw., bei denen Sie die formatierte Ausgabe und nicht den Rohwert
wünschen
2
Besser, aber immer noch nicht ganz richtig. content.field_myfield | striptags funktioniert nicht, Sie können dem kein Render-Array übergeben. Sie müssten es zuerst rendern und dann durchlaufen. Striptags und so weiter haben auch Probleme mit & und anderen Zeichen, die zweimal codiert werden können.
Berdir
2
Just | raw verlässt die HTML-Tags und druckt sie aus. Das Problem mit | striptags ist dann die doppelte Codierung von HTML-Entities, nicht das Markup. und dann & amp; amp;
Berdir
2
Dies ist keine doppelte Flucht, Sie können das sehen <und >werden richtig angezeigt. Das kaufmännische Und ist wahrscheinlich bereits mit einem Escapezeichen versehen, bevor Sie es ausgeben. Die Frage bezieht sich jedoch auf ein einfaches Textfeld und nicht auf ein formatiertes Textfeld , das von Textfiltern verarbeitet wird. (Um diese nicht gestellte Frage zu beantworten, wäre der Rohwert (wenn jemand das wirklich will) immer noch in .valueund er würde aus Sicherheitsgründen von Twig korrekt als Single-
Escape-Wert
2
Ja, das habe ich gemeint (Auto-Escaping = Single-Escaping). Ihre Beispiele für die Ausgabe von Entity-Feldwerten sind also perfekt, nur ohne den Striptag-Filter, da dies zu einer hässlichen Ausgabe mit doppeltem Escape-Effekt führen würde. (BTW die &amp;Ausgabe in Ihrem Beispiel ist falsch, dies geschieht nicht bei der automatischen Großschreibung, es sei denn, der Feldinhalt ist bereits einmal ausgeblendet).
4. April,
5

In diesem Fall können Sie das Twig Field Value- Modul verwenden. Nach der Installation dieses Moduls erhalten Sie Zugriff auf Teildaten von Feld-Render-Arrays. Zum Beispiel.

{{ content.field_name|field_value }}
content.field_image|field_target_entity.uri.value

etc. Weitere Infos auf der Projektseite

Andrew Kozoriz
quelle
1
{{ content.body | raw }} 

Ruft den Rohfeldwert in einer Zweigvorlage ab

Wasim Khan
quelle