Шаблоны товаров
Products/list.html.twig – Список товаров
Данный шаблон отвечает за вывод списка товаров
Доступные переменные:
| Название | Назначение |
|---|---|
| products_ids | Список отсортированных идентификаторов товаров |
| products | Список товаров в виде массива идентификатор => товар |
| searchForm | Форма фильтрации |
Ввиду технических особенностей, список товаров надо выводить итерацией по products_ids:
<ul>
{% for product_id in products_ids %}
{% if products[product_id] is defined %}{% set product = products[product_id] %}
<li>
<div class="thumbnail-container">
<div class="thumbnail-centered">
<a href="{{ path('product_view_slug', { 'slug': product.slug, 'id': product.id }) }}">
{% if product.mainPhoto %}
<img alt="" src="{{ product.mainPhoto|filecpd('custom', 220, 220) }}">
{% else %}
<img alt="" src="http://placehold.it/220x220&text=No%20image">
{% endif %}
</a>
</div>
</div>
<div class="body">
<div class="title">
<a href="{{ path('product_view_slug', { 'slug': product.slug, 'id': product.id }) }}" title="{{ product.title }}">{{ product.title|truncate(60) }}</a>
</div>
</div>
<div class="prices">
{% if product.priceDicount %}<div class="price-prev">{{ product.priceOld|number_format_currency('RUB') }}</div>{% endif %}
<div class="price-current">{{ product.price|number_format_currency('RUB') }}</div>
</div>
</li>
{% else %}
{# Здесь можно обработать ситуацию, когда товар не найден в базе данных #}
{% endif %}
</ul>
Работа с фильтрами
Объект searchForm содержит в себе все поля для фильтрации. Для быстрого отображения всей формы со всеми доступными полями можно воспользоваться кодом:
{{ form_widget(searchForm) }}
Также форму можно проитерировать, чтобы иметь возможность отрендерить каждое поле отдельно. Например:
{% for searchFormField in searchForm %}
<div class="list-group">
{{ form_row(searchFormField) }}
</div>
{% endfor %}
Products/view.html.twig – Просмотр товара
Данный шаблон отвечает за вывод страницы с описанием товара