Распечатать поле изображения с несколькими записями из поля в шаблоне ветки


9

У меня есть шаблон ветки для пользовательского типа контента. И он может отображать большинство полей просто отлично, но я не могу напечатать поле изображения с несколькими изображениями.

узел - 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 и content._field_myheaderimage выводит заголовок и изображение просто отлично. Но когда я использую для цикла

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

Я получаю ошибку

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

Когда я просто использую

{{ content.field_gallery_images }}

Он может выводить каждое изображение, но это не позволяет мне обернуть каждый элемент в div и добавить содержимое к каждому.


Ответ от @ 4k4 ниже имеет много преимуществ, но для вашего здравого смысла, заменив: content.field_gallery_images на node.field_gallery_images в вашей ветке 'for', вы бы получили каждый объект изображения в цикле.
RominRonin

Ответы:


9

Напечатайте поле изображения в шаблоне узла, как любое другое поле:

{{ content.field_gallery_images }}

А затем используйте ветку поля, чтобы пройтись по нескольким элементам поля:

поле - поле-галерея-images.html.twig

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

1

На D8 я смог сделать цикл foreach на своих изображениях, чтобы создать карусель.

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

Огромная помощь, спасибо. Зачем друпал, когда можно разглядеть кроличью нору в веточке? : D
cwiggo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.