Теги итераций

for

Неоднократно выполняет блок кода. Полный список атрибутов, доступных в forцикле, см. в разделе forloop.
Тег итерации for можно использовать для перебора многомерных массивов.
Пример
1
{% for demand in demands %}
2
Отгрузка номер {{ demand.name }}
3
{% endfor %}
4
Copied!
Вывод
1
Отгрузка номер 0001
2
Отгрузка номер 0002
Copied!
В примере выше, мы перебираем все отгрузки demand в массиве demands и выводим их названия c помощью массива {{ demand.name }}
Пример
1
{% for demand in demands %}
2
{% for attribute in demand.attributes %}
3
Отгрузка номер {{ demand.name }} - Доп. поле {{ attribute.name }}
4
{% endfor %}
5
{% endfor %}
Copied!
Вывод
1
Отгрузка номер 0001 - Доп. поле 1
2
Отгрузка номер 0001 - Доп. поле 2
3
Отгрузка номер 0002 - Доп. поле 1
4
Отгрузка номер 0002 - Доп. поле 2
Copied!
Теги итератора могут быть вложенными. Например, выше мы перебираем все отгрузки demand в массиве demands, а для каждой отгрузки demand перебираем массив названий доп. полей {{ attributes }}
Пример
1
{% for demand in demands %}
2
{% for invoiceOut in demand.invoicesOut %}
3
{% for attribute in invoiceOut.attributes %}
4
5
{% if attribute.name == "Нужное доп. поле" %}
6
{{ attribute.value }}
7
{% endif %}
8
9
{% endfor %}
10
{% endfor %}
11
{% endfor %}
Copied!
Вложенность тегов итерации for .неограничyна. Внутри тега фор можно использовать теги проверки условия if

break

Заставляет цикл прекращать итерации, когда встречает breakтег.
Пример:
1
{% for i in (1..5) %}
2
{% if i == 4 %}
3
{% break %}
4
{% else %}
5
{{ i }}
6
{% endif %}
7
{% endfor %}
Copied!
Вывод
1
1 2 3
Copied!

continue

Заставляет цикл пропустить текущую итерацию при обнаружении continueтега.
Пример:
1
{% for i in (1..5) %}
2
{% if i == 4 %}
3
{% continue %}
4
{% else %}
5
{{ i }}
6
{% endif %}
7
{% endfor %}
Copied!
Вывод
1
1 2 3 5
Copied!

Параметры тега for

limit

Ограничивает выход из цикла for до определенного индекса.
Пример:
1
Стоимость первых трех позиций заказа:
2
3
{% for position in positions limit:4 %}
4
{{ position.price }} руб.
5
{% endfor %}
Copied!
Вывод
1
Стоимость первых двух позиций заказа:
2
3
100 руб.
4
200 руб.
5
300 руб.
Copied!

offset

Запускает цикл for с определенного индекса.
Пример:
1
Стоимость позиций заказа, кроме первых двух:
2
3
{% for position in positions limit:2 %}
4
{{ position.price }} руб.
5
{% endfor %}
Copied!
Вывод
1
Стоимость позиций заказа, кроме первых двух:
2
3
300 руб.
4
400 руб.
5
500 руб.
Copied!
range
Определяет диапазон чисел для цикла. Вы можете определить диапазон, используя как буквальные, так и переменные значения.
Пример:
1
{% for i in (3..5) %}
2
{{ i }}
3
{% endfor %}
4
5
{% assign my_limit = 4 %}
6
{% for i in (1..my_limit) %}
7
{{ i }}
8
{% endfor %}
Copied!
Вывод
1
3 4 5
2
3
1 2 3 4
Copied!

forloop

forloop - объект, который содержит атрибуты своего цикла for
forloop может быть использован только в пределах тегов for

forloop.first

Возвращает, trueесли это первая итерация цикла for. Возвращает, falseесли это не первая итерация.
Пример:
1
{% for contactperson in agent.contactpersons %}
2
{% if forloop.first == true %}
3
Первое контактное лицо компании - {{ contactperson.phone }}
4
{% else %}
5
Остальные контактные лица компании - {{ contactperson.phone }}
6
{% endif %}
7
{% endfor %}
8
Copied!
Вывод
1
Первое контактное лицо компании - Иванов Иван!
2
Остальные контактные лица компании - Петров Петр.
3
Остальные контактные лица компании - Семенов Семен.
Copied!

forloop.index

Возвращает текущий индекс цикла for, начиная с 1.
Пример:
1
{% for account in organization.accounts %}
2
{{ forloop.index }}-й счет компании: {{ account.accountNumber }}
3
{% endfor %}
4
Copied!
Вывод
1
1-й счет компании: 1234567890
2
2-й счет компании: 0987654321
3
3-й счет компании: 1231231231
Copied!

forloop.index0

Возвращает текущий индекс цикла for, начиная с 0.
Пример:
1
{% for account in organization.accounts %}
2
{{ forloop.index }}-й счет компании: {{ account.accountNumber }}
3
{% endfor %}
Copied!
Вывод
1
0-й счет компании: 1234567890
2
1-й счет компании: 0987654321
3
2-й счет компании: 1231231231
Copied!

forloop.last

Возвращает, trueесли это последняя итерация цикла for. Возвращает, falseесли это не последняя итерация.
Пример:
1
Телефоны менеджеров контрагента:
2
3
{% for contactperson in agent.contactpersons %}
4
5
{{contactperson.name }} - {{contactperson.phone }}
6
{% if forloop.last != true %}
7
,
8
{% endif %}
9
10
{% endfor %}
Copied!
Вывод
1
Телефоны менеджеров контрагента:
2
3
Иванов Иван - 89991112233, Петров Петр - 89000000000,
4
Семенов Семен - 81112223344
Copied!

forloop.length

Возвращает количество итераций цикла.
Пример:
1
{% for payment in payments %}
2
{% if forloop.first %}
3
По заказу {{ forloop.length }} платежа на сумму:
4
{% endif %}
5
{{ payment.sum }} {{rate.name}}
6
{% endfor %}
Copied!
Вывод
1
По заказу 2 платежа на сумму:
2
1000 руб
3
2000 руб
4
3000 руб
Copied!

forloop.rindex

Возвращает forloop.index в обратном порядке.
Пример:
1
{% for invoiceOut in invoicesOut %}
2
{{ forloop.rindex }}-й счет - номер {{ invoiceOut.name }}
3
{% endfor %}
Copied!
Вывод
1
3-й счет - номер 3
2
2-й счет - номер 2
3
1-й счет - номер 1
Copied!

forloop.rindex0

Возвращает forloop.index0 в обратном порядке.
Пример
1
{% for invoiceOut in invoicesOut %}
2
{{ forloop.rindex0 }}-й счет - номер {{ invoiceOut.name }}
3
{% endfor %}
Copied!
Вывод
1
3-й счет - номер 3
2
2-й счет - номер 2
3
1-й счет - номер 1
4
0-й счет - номер 0
Copied!

cycle

Перебирает группу строк и выводит их в том порядке, в котором они были переданы в качестве параметров. При каждом вызове cycleвыводится следующая строка, переданная в качестве параметра.
cycleдолжен использоваться внутри блока for
Пример
1
{% cycle 'one', 'two', 'three' %}
2
{% cycle 'one', 'two', 'three' %}
3
{% cycle 'one', 'two', 'three' %}
4
{% cycle 'one', 'two', 'three' %}
Copied!
Вывод
1
one
2
two
3
three
4
one
Copied!
Last modified 1yr ago