Неоднократно выполняет блок кода. Полный список атрибутов, доступных в forцикле, см. в разделе forloop.
Тег итерации for можно использовать для перебора многомерных массивов.
Пример
{%for demand in demands %} Отгрузка номер {{ demand.name }} {%endfor%}
Вывод
Отгрузка номер 0001
Отгрузка номер 0002
В примере выше, мы перебираем все отгрузки demand в массиве demands и выводим их названия c помощью массива{{ demand.name }}
Пример
{%for demand in demands %} {%for attribute in demand.attributes %} Отгрузка номер {{ demand.name }} - Доп. поле {{ attribute.name }} {%endfor%}{%endfor%}
Вывод
Отгрузка номер 0001 - Доп. поле 1
Отгрузка номер 0001 - Доп. поле 2
Отгрузка номер 0002 - Доп. поле 1
Отгрузка номер 0002 - Доп. поле 2
Теги итератора могут быть вложенными. Например, выше мы перебираем все отгрузки demand в массиве demands, а для каждой отгрузки demand перебираем массив названий доп. полей {{ attributes }}
Пример
{%for demand in demands %} {%for invoiceOut in demand.invoicesOut %} {%for attribute in invoiceOut.attributes %} {%if attribute.name =="Нужное доп. поле"%} {{ attribute.value }} {%endif%} {%endfor%} {%endfor%}{%endfor%}
Вложенность тегов итерации for .неограничyна. Внутри тега фор можно использовать теги проверки условияif
break
Заставляет цикл прекращать итерации, когда встречает breakтег.
Пример:
{%for i in (1..5)%} {%if i ==4%} {%break%} {%else%} {{ i }} {%endif%}{%endfor%}
Вывод
1 2 3
continue
Заставляет цикл пропустить текущую итерацию при обнаружении continueтега.
Пример:
{%for i in (1..5)%} {%if i ==4%} {%continue%} {%else%} {{ i }} {%endif%}{%endfor%}
Вывод
1 2 3 5
Параметры тега for
limit
Ограничивает выход из цикла for до определенного индекса.
Пример:
Стоимость первых трех позиций заказа: {%for position in positions limit:4%} {{ position.price }} руб. {%endfor%}
Вывод
Стоимость первых двух позиций заказа:
100 руб.
200 руб.
300 руб.
offset
Запускает цикл for с определенного индекса.
Пример:
Стоимость позиций заказа, кроме первых двух: {%for position in positions limit:2%} {{ position.price }} руб. {%endfor%}
Вывод
Стоимость позиций заказа, кроме первых двух:
300 руб.
400 руб.
500 руб.
range
Определяет диапазон чисел для цикла. Вы можете определить диапазон, используя как буквальные, так и переменные значения.
Пример:
{%for i in (3..5)%} {{ i }}{%endfor%}{% assign my_limit =4%}{%for i in (1..my_limit)%}{{ i }}{%endfor%}
Вывод
3 4 5
1 2 3 4
forloop
forloop - объект, который содержит атрибуты своего цикла for
forloop может быть использован только в пределах тегов for
forloop.first
Возвращает, trueесли это первая итерация цикла for. Возвращает, falseесли это не первая итерация.
Пример:
{%for contactperson in agent.contactpersons %} {%if forloop.first ==true%} Первое контактное лицо компании - {{ contactperson.phone }} {%else%} Остальные контактные лица компании - {{ contactperson.phone }} {%endif%}{%endfor%}
Вывод
Первое контактное лицо компании - Иванов Иван!
Остальные контактные лица компании - Петров Петр.
Остальные контактные лица компании - Семенов Семен.
forloop.index
Возвращает текущий индекс цикла for, начиная с 1.
Пример:
{%for account in organization.accounts %} {{ forloop.index }}-й счет компании: {{ account.accountNumber }} {%endfor%}
Вывод
1-й счет компании: 1234567890
2-й счет компании: 0987654321
3-й счет компании: 1231231231
forloop.index0
Возвращает текущий индекс цикла for, начиная с 0.
Пример:
{%for account in organization.accounts %} {{ forloop.index }}-й счет компании: {{ account.accountNumber }} {%endfor%}
Вывод
0-й счет компании: 1234567890
1-й счет компании: 0987654321
2-й счет компании: 1231231231
forloop.last
Возвращает, trueесли это последняя итерация цикла for. Возвращает, falseесли это не последняя итерация.
Телефоны менеджеров контрагента:
Иванов Иван - 89991112233, Петров Петр - 89000000000,
Семенов Семен - 81112223344
forloop.length
Возвращает количество итераций цикла.
Пример:
{%for payment in payments %} {%if forloop.first %} По заказу {{ forloop.length }} платежа на сумму: {%endif%} {{ payment.sum }} {{rate.name}} {%endfor%}
Вывод
По заказу 2 платежа на сумму:
1000 руб
2000 руб
3000 руб
forloop.rindex
Возвращает forloop.index в обратном порядке.
Пример:
{%for invoiceOut in invoicesOut %} {{ forloop.rindex }}-й счет - номер {{ invoiceOut.name }}{%endfor%}
Вывод
3-й счет - номер 3
2-й счет - номер 2
1-й счет - номер 1
forloop.rindex0
Возвращает forloop.index0 в обратном порядке.
Пример
{%for invoiceOut in invoicesOut %} {{ forloop.rindex0 }}-й счет - номер {{ invoiceOut.name }}{%endfor%}
Вывод
3-й счет - номер 3
2-й счет - номер 2
1-й счет - номер 1
0-й счет - номер 0
cycle
Перебирает группу строк и выводит их в том порядке, в котором они были переданы в качестве параметров. При каждом вызове cycleвыводится следующая строка, переданная в качестве параметра.