Циклы и условия в Twig
Twig представляет собой шаблонизатор сопоставимый с возможностями самого языка PHP, а порой и превосходит его. Да, что там говорить, Twig изначально ведь и создавался для того, чтобы максимально упростить сложный синтаксис шаблонов PHP.
Поэтому, нет ничего удивительного в том, что в Twig есть все необходимые базовые конструкции, аналогичные PHP – циклы и условия.
В предыдущих статьях мы уже видели, что представляет собой цикл в Twig. Обычно, мы используем тег for, назначая алиас для каждого элемента из некоторого определенного массива. В нашем случае с сотрудниками школы, в качестве алиаса у нас выступает staffer (сотрудник) из массива сотрудников (staff). Через алиас можно затем получить доступ ко всем атрибутам объекта, на который это алиас указывает с помощью оператора точки (.). Для обозначения окончания тега for используется тег endfor.
Twig предоставляет много разных фишек, синтаксических улучшений, таких как например оператор двоеточие (..), который является короткой альтернативой функции range в PHP. Т.е. с помощью него можно перебирать перечисляемые значения.
Вот пример:
{% for number in 0..100 %}
{{ number }}
{% endfor %}
Подобное возможно и для букв
{% for letter in 'a'..'z' %}
{{ letter }}
{% endfor %}
Также, очень полезной может оказаться возможность добавления условия прямо в определение цикла. С помощью условия мы сможем отфильтровать элементы по тому или иному критерию. Допустим нам необходимо отфильтровать список продуктов по цене – их цена должна быть менее 150 у.е. Вот как это будет выглядеть в Twig:
<tbody>
{% for product in products if product.value < 150 %}
<tr>
<td>{{ product.name }}</td>
<td>{{ product.description }}</td>
<td>{{ product.value }}</td>
<td>{{ product.date_register|date("m/d/Y") }}</td>
</tr>
{% endfor %}
</tbody>
Условия
Как и циклы, Twig поддерживает тег условия –if, elseif, if not и else. Это вполне стандартные конструкции, которые аналогичны конструкциям в PHP. Они могут использоваться для фильтрации значений.
Допустим в некотором приложении нам необходимо отфильтровать товары, отобразив только те, у которых цена больше 300 у.е.:
<tbody>
{% for product in products %}
{% if product.value > 300 %}
<tr>
<td>{{ product.name }}</td>
<td>{{ product.description }}</td>
<td>{{ product.value }}</td>
<td>{{ product.date_register|date("m/d/Y") }}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
Таким образом, циклы и условия в Twig – это мощные средства обработки и фильтрации данных на основе определенных критериев. Они хоть и выполняют схожие с языковыми конструкциями PHP задачи, однако часто представлены в более компактной форме.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.