Drucken Sie das Bildfeld mit mehreren Einträgen aus dem Feld in der Zweigvorlage

9

Ich habe eine Zweigvorlage für einen benutzerdefinierten Inhaltstyp. Und es ist in der Lage, die meisten Felder einwandfrei zu rendern, aber ich kann kein Bildfeld mit mehreren Bildern drucken.

node - mycontenttype.html.twig enthält

{{ content.field_mytitle }}
{{ content.field_myheaderimage }}
<div class="row expanded">
    {% for galleryimage in content.field_gallery_images %}
           <div class="gallery-image-item"> {{ galleryimage }} </div>
    {% endfor %}
</div>

content.field_mytitle und content._field_myheaderimage geben den Titel und das Bild einwandfrei aus. Aber wenn ich die for-Schleife benutze

    {% for galleryimage in content.field_gallery_images %}
           <div class="gallery-image-item"> {{ galleryimage }} </div>
    {% endfor %}

Ich erhalte eine Fehlermeldung

Exception: Object of type Drupal\node\Entity\Node cannot be printed. in Drupal\Core\Template\TwigExtension->escapeFilter() (line 443 of core/lib/Drupal/Core/Template/TwigExtension.php).

Wenn ich nur benutze

{{ content.field_gallery_images }}

Es ist in der Lage, jedes Bild auszugeben, aber dies erlaubt mir nicht, jedes Element in Divs zu verpacken und jedem Inhalt hinzuzufügen.

Matt
quelle
Die Antwort von @ 4k4 unten hat viele Vorteile, aber für Ihre Vernunft hätte das Ersetzen von: content.field_gallery_images durch node.field_gallery_images in Ihrer Zweig-for-Schleife Ihnen jede Bildentität in der Schleife gegeben.
RominRonin

Antworten:

9

Drucken Sie das Bildfeld in der Knotenvorlage wie jedes andere Feld:

{{ content.field_gallery_images }}

Verwenden Sie dann einen Feldzweig, um mehrere Feldelemente zu durchlaufen:

field - field-gallery-images.html.twig

<div class="row expanded">
  {% for item in items %}
    <div class="gallery-image-item">{{ item.content }}</div>
  {% endfor %}
</div>
4k4
quelle
1

Auf D8 konnte ich eine foreach-Schleife für meine Bilder erstellen, um ein Karussell zu erzeugen.

<!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">
    {% for i in 0..content.field_accueil_image_slide|length %}
     {%if content.field_accueil_image_slide[i]['#item'].entity.uri.value != "" and content.field_accueil_image_slide[i]['#item'].entity.uri.value is not empty %}
        <div class="item {{ (i == 0) ? 'active' : '' }}" style="">{{ content.field_accueil_image_slide[i]}}</div>
     {%endif%}
    {%endfor%}
  </div>
Pauleau
quelle
Riesige Hilfe, danke. Warum Drupal, wenn Sie das Kaninchenloch im Zweig herausfinden können? : D
cwiggo