Drucken von Feldelementattributen mit Twig / Drupal 8

7

In Drupal 7 kann ich dies in einer benutzerdefinierten Feldvorlage tun, um das Alt-Tag eines Bildes zu drucken:

<?php print $item['#item']['alt']; ?>

Und obwohl "item" in Twig / drupal 8-Feldern eine Variable zu sein scheint, kann ich anscheinend nicht dasselbe tun. Ich habe diese ausprobiert:

{{ item.alt }}
{{ item.item.alt }}

Diese funktionieren nicht, aber ich bekomme auch keine Fehler. Ein Blick auf die API gibt mir nicht viel Einblick. Ich habe diesen Kern gesehen, aber auch hier wurde kein Alt-Tag separat gerendert. Mein Bild rendert das Alt-Tag, wie ich es im Code sehen kann.

Danny Englander
quelle
1
Etwas verwandt: drupal.org/node/2042773
Berdir

Antworten:

10

Die Syntax zum Drucken des Alt-Tags lautet in diesem Fall wie folgt:

{{ item['#item'].alt }}

Twig in Drupal 8 behandelt Hash-Schlüssel nicht wie #itemin Render-Arrays sauber. Ein Teil des Problems ist, dass #dies einen Kommentar in Twig bedeutet, also {{ item.#item.alt }}nicht funktionieren würde.

Es besteht die Möglichkeit, dies mit einer Twig-Erweiterung zu umgehen, um einen Drilldown in Hash-Attribute mit der Syntax zu ermöglichen, {{ item.item.alt }}aber ich bin mir nicht sicher, ob jemand daran arbeitet. Ich sollte erwähnen, dass Twig-Erweiterungen auch in Contrib hinzugefügt werden können.

Cottser
quelle
Danke, das funktioniert super. Ich konnte diesbezüglich keine Dokumentation finden. Gibt es einen Hinweis, auf den Sie mich verweisen können?
Danny Englander
2
Solche Dinge sollten wahrscheinlich unter drupal.org/theme-guide/8 hinzugefügt werden, wenn sie spezifisch für Twig + Drupal sind. Ich kann sehen, dass dies möglicherweise zu drupal.org/node/1918824 passt , vielleicht unter Variablen?
Cottser
1
Siehe auch drupal.org/node/2160611 :)
Cottser
1
Ich habe dieses Beispiel zu drupal.org/node/1918824 hinzugefügt , wie von @Cottser vorgeschlagen, und einen Kommentar hinzugefügt, der auf das von ihm eingereichte Kernproblem verweist.
Ursula
Auf Drupal 8 {{ item['#item'].alt }}funktioniert das bei mir nicht. Stattdessen ist eine andere Lösung von @Hugo in Ordnung {{ item.content['#item'].alt }}.
Sébastien Gicquel
3

Ich habe das alt-Attribut meines Feldes mit dieser Zeile gedruckt {{ item.content['#item'].alt }}

Hugo
quelle
Auf Drupal 8 {{ item['#item'].alt }}funktioniert das bei mir nicht. Ihre Lösung {{ item.content['#item'].alt }}funktioniert (ich habe hier eine Diskussion gesehen drupal.org/project/drupal/issues/2160611 )
Sébastien Gicquel