Wydrukuj pole obrazu z wieloma wpisami z pola w szablonie gałązki

9

Mam szablon gałązki dla niestandardowego typu zawartości. I jest w stanie dobrze renderować większość pól, ale nie jestem w stanie wydrukować pola obrazu z wieloma obrazami.

węzeł - zawiera mycontenttype.html.twig

{{ 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 i content._field_myheaderimage dobrze wyświetla tytuł i obraz. Ale kiedy używam pętli for

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

Otrzymuję błąd

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).

Kiedy po prostu używam

{{ content.field_gallery_images }}

Jest w stanie wyprowadzać każdy obraz, ale nie pozwala mi to zawijać każdego elementu w div i dodawać zawartości do każdego.

Matt
źródło
Odpowiedź z @ 4k4 poniżej ma wiele zalet, ale dla twojego rozsądku, zastąpienie: content.field_gallery_images przez node.field_gallery_images w pętli gałązka „za” dałby ci każdą jednostkę obrazu w pętli.
RominRonin,

Odpowiedzi:

9

Wydrukuj pole obrazu w szablonie węzła, jak każde inne pole:

{{ content.field_gallery_images }}

A następnie użyj gałązki pola, aby przejść przez wiele elementów pola:

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
źródło
1

Na D8 mogłem zrobić pętlę foreach na moich obrazach, aby wygenerować karuzelę.

<!-- 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
źródło
Ogromna pomoc dzięki. Po co drupalowi, skoro można znaleźć króliczą dziurę w gałązce? : D
cwiggo