Доступ к подполям абзацев в twig

Как я могу получить доступ к подполям поля абзаца.

Для моей карусели я сделал абзац «карусель изображений героев», затем для полей я сделал еще один подпараграф «поля карусели изображений героев», которые я назначил первому. это позволяет мне создавать несколько слайдов и отлично работает на бэкэнде.

Теперь я хочу стилизовать его внутри шаблонов веток.

Я могу получить доступ непосредственно к первому, второму и т. д. подполям, например: content.field_hero_image_c_fields.0['#paragraph'].field_hero_image_c_content Но мне нужно, чтобы это было в цикле. Теперь проблема в том, когда я делаю что-то вроде:

{% for item in content.field_hero_image_c_fields %}
    {{ item }}
{% endfor %}

Он получает мои поля, а также другие поля по умолчанию, такие как uuid, field_name и так далее.

Вот дамп контента:

array (size=2)
  'field_hero_image_c_fields' => 
    array (size=18)
      '#theme' => string 'field' (length=5)
      '#title' => string 'Hero Image Karussell Felder' (length=27)
      '#label_display' => string 'hidden' (length=6)
      '#view_mode' => string 'default' (length=7)
      '#language' => string 'de' (length=2)
      '#field_name' => string 'field_hero_image_c_fields' (length=25)
      '#field_type' => string 'entity_reference_revisions' (length=26)
      '#field_translatable' => boolean false
      '#entity_type' => string 'paragraph' (length=9)
      '#bundle' => string 'hero_image_carousel' (length=19)
      '#object' => 
        object(Drupal\paragraphs\Entity\Paragraph)[1484]
          protected 'unserializedBehaviorSettings' => null
          protected 'values' => 
            array (size=21)
              ...
          protected 'fields' => 
            array (size=6)
              ...
          protected 'fieldDefinitions' => 
            array (size=19)
              ...
          protected 'languages' => 
            array (size=4)
              ...
          protected 'langcodeKey' => string 'langcode' (length=8)
          protected 'defaultLangcodeKey' => string 'default_langcode' (length=16)
          protected 'activeLangcode' => string 'x-default' (length=9)
          protected 'defaultLangcode' => string 'de' (length=2)
          protected 'translations' => 
            array (size=1)
              ...
          protected 'translationInitialize' => boolean false
          protected 'newRevision' => boolean false
          protected 'isDefaultRevision' => string '1' (length=1)
          protected 'entityKeys' => 
            array (size=4)
              ...
          protected 'translatableEntityKeys' => 
            array (size=2)
              ...
          protected 'validated' => boolean false
          protected 'validationRequired' => boolean false
          protected 'loadedRevisionId' => string '247' (length=3)
          protected 'entityTypeId' => string 'paragraph' (length=9)
          protected 'enforceIsNew' => null
          protected 'typedData' => 
            object(Drupal\Core\Entity\Plugin\DataType\EntityAdapter)[1554]
              ...
          protected 'cacheContexts' => 
            array (size=0)
              ...
          protected 'cacheTags' => 
            array (size=0)
              ...
          protected 'cacheMaxAge' => int -1
          protected '_serviceIds' => 
            array (size=0)
              ...
          protected 'needsSave' => boolean false
      '#items' => 
        object(Drupal\entity_reference_revisions\EntityReferenceRevisionsFieldItemList)[870]
          protected 'list' => 
            array (size=2)
              ...
          protected 'langcode' => string 'de' (length=2)
          protected 'definition' => 
            object(Drupal\field\Entity\FieldConfig)[1544]
              ...
          protected 'name' => string 'field_hero_image_c_fields' (length=25)
          protected 'parent' => 
            object(Drupal\Core\Entity\Plugin\DataType\EntityAdapter)[1554]
              ...
          protected 'stringTranslation' => null
          protected 'typedDataManager' => 
            object(Drupal\Core\TypedData\TypedDataManager)[765]
              ...
      '#formatter' => string 'entity_reference_revisions_entity_view' (length=38)
      '#is_multiple' => boolean true
      0 => 
        array (size=6)
          '#paragraph' => 
            object(Drupal\paragraphs\Entity\Paragraph)[2440]
              ...
          '#view_mode' => string 'default' (length=7)
          '#cache' => 
            array (size=3)
              ...
          '#theme' => string 'paragraph' (length=9)
          '#weight' => int 0
          '#pre_render' => 
            array (size=1)
              ...
      1 => 
        array (size=6)
          '#paragraph' => 
            object(Drupal\paragraphs\Entity\Paragraph)[2264]
              ...
          '#view_mode' => string 'default' (length=7)
          '#cache' => 
            array (size=3)
              ...
          '#theme' => string 'paragraph' (length=9)
          '#weight' => int 0
          '#pre_render' => 
            array (size=1)
              ...
      '#cache' => 
        array (size=3)
          'contexts' => 
            array (size=0)
              ...
          'tags' => 
            array (size=0)
              ...
          'max-age' => int -1
      '#weight' => int 1
  'field_hero_image_c_scroll_link' => 
    array (size=17)
      '#theme' => string 'field' (length=5)
      '#title' => string 'Scroll Link' (length=11)
      '#label_display' => string 'hidden' (length=6)
      '#view_mode' => string 'default' (length=7)
      '#language' => string 'de' (length=2)
      '#field_name' => string 'field_hero_image_c_scroll_link' (length=30)
      '#field_type' => string 'link' (length=4)
      '#field_translatable' => boolean false
      '#entity_type' => string 'paragraph' (length=9)
      '#bundle' => string 'hero_image_carousel' (length=19)
      '#object' => 
        object(Drupal\paragraphs\Entity\Paragraph)[1484]
          protected 'unserializedBehaviorSettings' => null
          protected 'values' => 
            array (size=21)
              ...
          protected 'fields' => 
            array (size=6)
              ...
          protected 'fieldDefinitions' => 
            array (size=19)
              ...
          protected 'languages' => 
            array (size=4)
              ...
          protected 'langcodeKey' => string 'langcode' (length=8)
          protected 'defaultLangcodeKey' => string 'default_langcode' (length=16)
          protected 'activeLangcode' => string 'x-default' (length=9)
          protected 'defaultLangcode' => string 'de' (length=2)
          protected 'translations' => 
            array (size=1)
              ...
          protected 'translationInitialize' => boolean false
          protected 'newRevision' => boolean false
          protected 'isDefaultRevision' => string '1' (length=1)
          protected 'entityKeys' => 
            array (size=4)
              ...
          protected 'translatableEntityKeys' => 
            array (size=2)
              ...
          protected 'validated' => boolean false
          protected 'validationRequired' => boolean false
          protected 'loadedRevisionId' => string '247' (length=3)
          protected 'entityTypeId' => string 'paragraph' (length=9)
          protected 'enforceIsNew' => null
          protected 'typedData' => 
            object(Drupal\Core\Entity\Plugin\DataType\EntityAdapter)[1554]
              ...
          protected 'cacheContexts' => 
            array (size=0)
              ...
          protected 'cacheTags' => 
            array (size=0)
              ...
          protected 'cacheMaxAge' => int -1
          protected '_serviceIds' => 
            array (size=0)
              ...
          protected 'needsSave' => boolean false
      '#items' => 
        object(Drupal\Core\Field\FieldItemList)[2265]
          protected 'list' => 
            array (size=1)
              ...
          protected 'langcode' => string 'de' (length=2)
          protected 'definition' => 
            object(Drupal\field\Entity\FieldConfig)[1546]
              ...
          protected 'name' => string 'field_hero_image_c_scroll_link' (length=30)
          protected 'parent' => 
            object(Drupal\Core\Entity\Plugin\DataType\EntityAdapter)[1554]
              ...
          protected 'stringTranslation' => null
          protected 'typedDataManager' => 
            object(Drupal\Core\TypedData\TypedDataManager)[765]
              ...
      '#formatter' => string 'link' (length=4)
      '#is_multiple' => boolean false
      0 => 
        array (size=4)
          '#type' => string 'link' (length=4)
          '#title' => string 'Die entdecken!' (length=27)
          '#options' => 
            array (size=0)
              ...
          '#url' => 
            object(Drupal\Core\Url)[2421]
              ...
      '#cache' => 
        array (size=3)
          'contexts' => 
            array (size=0)
              ...
          'tags' => 
            array (size=0)
              ...
          'max-age' => int -1
      '#weight' => int 2

А тут свалка

Как я могу получить доступ и сделать цикл только для тех полей, которые мне нужны?

Спасибо за любой совет!


person mastercheef85    schedule 17.07.2017    source источник
comment
предложит использовать функцию дампа, доступную в ветке, проверьте структуру переменных, а затем напишите свой цикл for. twig.symfony.com/doc/2.x/functions/dump. html   -  person vishwa    schedule 17.07.2017
comment
Я конечно знаю дамп, но это не очень помогает. я отредактировал пост и добавил дамп   -  person mastercheef85    schedule 17.07.2017


Ответы (1)


Этот подход работал для меня

{% for item in content['#node'].field_myparagraphfield_items %}
....
<img class="carousel-image-fullsize" src="{{ file_url( item.entity.field_picture_item_image_main[0].entity.uri.value | image_style("my_carousel_image_style") )}}">
....
{% endfor %}

поля в абзаце будут найдены как item.entity.field_picture_item_image_main внутри цикла for. Не самая простая вещь для понимания!

person HongPong    schedule 13.06.2018