Ich muss die Kontrolle über das Rendern eines field_admin_tags
Felds in einer node.html.twig
Vorlage übernehmen.
Das funktioniert:
{{ content.field_admin_tags }}
- Rendert alles (Label + alle Feldwerte){{ content.field_admin_tags.0 }}
- Rendert nur den ersten Wert im Feld und keine Beschriftung
PROBLEM: Ich habe keine Kontrolle über das Markup, das die Tags umgibt, z <ul><li>...</li></ul>
.
Meine Idee war es also, über das Render-Array zu iterieren .
Aber das funktioniert nicht:
{% for tag in content.field_admin_tags %}
{{ tag }}
{% endfor %}
Erhalte ich: Exception: Object of type Drupal\node\Entity\Node cannot be printed
.
Ich denke, ich iteriere über die Schlüssel / Werte des Render-Arrays im Vergleich zu den Elementen im Feld. .
Ich möchte iterieren content.field_admin_tags.0
, content.field_admin_tags.1
usw.
Irgendeine Idee, wie man das behebt? Vielen Dank.
Antworten:
Sie können dies in einem Feld Zweig beheben. Dort können Sie die vorhandene Schleife verwenden, um die Feldelemente zu durchlaufen:
node.html.twig
field - field-admin-tags.html.twig
Dieses Beispiel ersetzt
<div>
mit<ul>
. Entfernen{{ attributes }}
oder umgehen Sie die Feldvorlage nicht. Weitere Informationen finden Sie unter Was kann quickedit beschädigen und wie kann ich das Problem beheben?quelle
{{ content.field_admin_tags }}
Wenn Sie mit 4k4 einverstanden sind, ist die Feldvorlage der beste Ort. Wenn Sie sie wirklich in der Entitätsvorlage (z. B. Knoten) haben möchten, können Sie Folgendes tun:
Aber ehrlich gesagt finde ich es ein bisschen hässlich, die Feldvorlage ist der richtige Ort.
quelle
Wenn Sie wie ich nach einer Möglichkeit suchen, Absätze in der Zweigvorlage eines Knotens zu durchlaufen, gehen Sie wie folgt vor:
Angenommen, Sie haben einen Knoten mit einem mehrwertigen Absatzfeld, sodass ein Inhaltseditor mehrere Absätze erstellen kann, und Sie möchten jeden Absatz in der Knoten-Zweigvorlage durchlaufen (beispielsweise, um jeden Absatz einen Umbruch hinzuzufügen):
UPDATE: Ich musste einen anderen Weg finden, um alle Absätze ohne Inhalt zu drucken. Die Inhaltsvariable enthält alles, was Sie im Abschnitt "Anzeige verwalten" des Knotens eingerichtet haben. Meine derzeitige Arbeitsmethode ist jedoch, niemals "Anzeige verwalten" oder Layouts zu verwenden, da Sie auf alle Daten in der Knotenzweigdatei zugreifen können, und fast alle Einstellungen, die Sie unter 'Anzeige verwalten' vornehmen würden, z. B. das Anwenden eines Bildstils oder das Einstellen eines Datumsformats, können Sie direkt in twig vornehmen.
Für mich ist dies ein Vorteil, da ich weiß, dass alles, was ich sehe, aus der Zweigdatei stammt und ich nicht nach dunklen Feldeinstellungen suchen muss, die möglicherweise irgendwo Klassen hinzufügen. Alles, was ich sehe, kommt von nur einer Stelle (der Knoten-Zweig-Datei) und nicht von einer Kombination aus der Zweig-Datei und dem Verwaltungsbildschirm.
Wie auch immer, mit dem fantastischen Twig Tweak-Modul können Sie ein mehrwertiges Absatzfeld in der Twig-Datei eines Knotens drucken, ohne die Inhaltsvariable verwenden zu müssen:
quelle
Ich habe festgestellt, dass die
#items
Eigenschaft nützlich ist, wenn in Twig Schleifen unbekannter Länge erstellt werden:quelle
Wenn Sie zusätzliche Wrapper um die Felder innerhalb des Absatzfelds platzieren möchten oder aus irgendeinem Grund einen bestimmten Absatzreferenzfeldwert benötigen, können Sie Folgendes tun:
Auf diese Weise sehen
{{kint(content.paragraph_field_name[key])}}
Sie, dass auf die Felder im Teil ['#paragraph'] des Arrays zugegriffen werden kann.quelle