Imprimir campo de imagem com várias entradas do campo no modelo de galho

9

Eu tenho um modelo de galho para um tipo de conteúdo personalizado. E é capaz de renderizar a maioria dos campos muito bem, mas não consigo imprimir um campo de imagem com várias imagens.

nó - mycontenttype.html.twig contém

{{ 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 e content._field_myheaderimage produz o título e a imagem muito bem. Mas quando eu uso o loop for

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

Eu recebo um erro

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

Quando eu apenas uso

{{ content.field_gallery_images }}

É capaz de produzir cada imagem, mas isso não me permite agrupar cada item em divs e adicionar conteúdo a cada um.

Matt
fonte
A resposta de @ 4k4 abaixo tem muitas vantagens, mas, para sua sanidade, substituir: content.field_gallery_images por node.field_gallery_images no seu loop 'for' teria dado a cada entidade de imagem no loop.
RominRonin

Respostas:

9

Imprima o campo de imagem no modelo de nó como qualquer outro campo:

{{ content.field_gallery_images }}

E, em seguida, use um galho de campo para percorrer vários itens de campo:

campo - campo-galeria-images.html.twig

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

No D8, pude fazer um loop foreach nas minhas imagens de forma a gerar um carrossel.

<!-- 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
fonte
Ajuda enorme obrigado. Por que drupal quando você pode descobrir a toca do coelho em galho? : D
cwiggo