Imprimir campo de imagen con múltiples entradas del campo en plantilla de ramita


9

Tengo una plantilla de ramita para un tipo de contenido personalizado. Y es capaz de representar la mayoría de los campos bien, pero no puedo imprimir un campo de imagen con varias imágenes.

nodo: mycontenttype.html.twig contiene

{{ 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 y content._field_myheaderimage genera el título y la imagen muy bien. Pero cuando uso el bucle for

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

Recibo un error

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

Cuando solo uso

{{ content.field_gallery_images }}

Es capaz de generar cada imagen, pero esto no me permite envolver cada elemento en divs y agregar contenido a cada uno.


La respuesta de @ 4k4 a continuación tiene muchas ventajas, pero para su cordura, reemplazar: content.field_gallery_images con node.field_gallery_images en su bucle 'for' de ramita le habría dado cada entidad de imagen en el bucle.
RominRonin

Respuestas:


9

Imprima el campo de imagen en la plantilla de nodo como cualquier otro campo:

{{ content.field_gallery_images }}

Y luego use una rama de campo para recorrer múltiples elementos de campo:

field - field-gallery-images.html.twig

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

1

En D8 pude hacer un bucle foreach en mis imágenes para generar un carrusel.

<!-- 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>

Enorme ayuda gracias. ¿Por qué hacer Drupal cuando puedes descubrir la madriguera del conejo en la ramita? : D
cwiggo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.