Визуализация компонента twig в цикле

#php #symfony #twig

#php #symfony #twig

Вопрос:

цель: база данных продуктов компонент twig, визуализируемый в цикле.

У меня есть такая настройка:

  • Компонент продукта .twig с моей разметкой компонента:
 <article class="productCard "><h3 class="productCard__name">{{ product.name }}</h3></article>
 
  • Цикл на моей странице, в котором я хочу отобразить все экземпляры продукта, но с шаблоном компонента twig:
 {% for product in products %}
    <div class="col">
        {{ include('components/productCard.html.twig'),{'product.name': product.name}) }}
    </div>
    {% if loop.index % 4 == 0 %}
        </div><div class="row" >
    {% endif %}
 
  • База данных с фактическим списком продуктов.

Я не уверен в правильном синтаксисе вызова цикла для достижения того, чего я хочу (передача параметров базы данных в цикл компоненту).

Комментарии:

1. То, что вы ищете, — это, по сути, как отправить массив продуктов в шаблон в качестве переменной?

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

3. Ах, теперь я вижу после редактирования, что у вас уже есть цикл… там у вас есть дополнительная закрывающая скобка: productCard.html.twig'), — вы закрываете include вызов здесь.

4. Я думаю, что передача всей переменной product будет работать лучше: {{ include('components/productCard.html.twig', { product: product }) }}

5. ^ вам не нужно явно отправлять переменную product в шаблон, поскольку она все равно будет известна внутри включенного шаблона из-за цикла

Ответ №1:

Правильный синтаксис будет:

 {% include 'components/productCard.html.twig' %}
 

Нет необходимости использовать with или передавать переменные. Тогда ваш другой фрагмент должен работать как есть:

 <article class="productCard">
    <h3 class="productCard__name">{{ product.name }}</h3>
</article>