Получить значение поля из объекта, на который ссылается ссылка, в цикле ветки


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

Пример: У меня есть тип контента под названием Задача, и в задаче у меня есть ссылка на несколько сущностей на тип контента работника, у работника есть должность, имя и телефон. Как я могу повторить каждого работника и отобразить информацию в таблице?

Что я хочу сделать, так это переопределить узел--task.html.twig, чтобы сделать что-то вроде этого:

Предполагая, что у нас есть поле field_workers в типе содержимого задачи.

<table>
   <thead>
     <tr>
       <th>
         Name
       </th>
       <th>
         Phone
       </th>
     </tr>
   </thead>
   <tbody>
    {% for worker in content.field_workers %}
     <tr>
       <td>
        {{worker.field_name.value}}
       </td>
       <td>
         {{worker.field_phone.value}}
       </td>
     </tr>
     {% endfor %}
   </tbody>
</table>

Возможно ли это? Спасибо!

Author: Henrique Alho, 2017-03-10

2 answers

Вы хотите работать с узлом вместо содержимого.

Что-то подобное должно сработать

{% for item in node.field_workers %}
 {{ item.entity.field_name.value }}
{% endfor %}

Смотрите Шпаргалку API сущности и API ветки и поля сущности или как взять под контроль node.html.twig (мой пост в блоге) для получения дополнительной информации.

 6
Author: Berdir, 2020-09-17 20:39:07

Как объясняет @Berdir в http://www.md-systems.ch/en/blog/techblog/2017/02/20/twig-and-entity-field-api-or-how-to-take-control-of-nodehtmltwig{[9] } у вас есть два варианта: использовать сущность node (см. Ответ Бердира) или массив визуализации в content. Для контент-подхода вы должны поместить строку таблицы во второй шаблон узла:

Узел --задача.html.ветка

<table>
   <thead>
     <tr>
       <th>
         Name
       </th>
       <th>
         Phone
       </th>
     </tr>
   </thead>
   <tbody>
     {{ content.field_workers }}
   </tbody>
</table>

Узел -- рабочий --таблица.html.ветка

     <tr>
       <td>
         {{ content.field_name }}
       </td>
       <td>
         {{ content.field_phone }}
       </td>
     </tr>

Недостатком, очевидно, являетесь вы нужны два шаблона. Преимущество в том, что вы можете отображать рабочие поля так, как они настроены в пользовательском интерфейсе, и вы можете использовать текстовые фильтры. Используйте отдельный режим просмотра table, чтобы вы могли отображать рабочий тип контента в других местах в обычном режиме. Вам также может потребоваться удалить html-код из шаблона field--field-workers.html.twig, если он мешает структуре таблицы.

 3
Author: 4k4, 2017-03-13 10:57:31