"для" цикла в шаблоне скорости

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

Итак... в принципе я не могу использовать цикл "для" в шаблоне скорости.

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

Ответ 1

Попробуйте сделать это следующим образом:

#set($start = 0)
#set($end = 4)
#set($range = [$start..$end])
#foreach($i in $range)
   doSomething
#end

Код не был протестирован, но он должен работать следующим образом.

Ответ 2

Вам не нужно использовать #set как принятый ответ. Вы можете использовать что-то вроде этого:

#foreach($i in [1..$end])
    LOOP ITERATION: $i
#end

Если вы хотите индексировать нуль, вам нужно использовать один #set, потому что вы не можете вычесть его в пределах оператора диапазона:

#set($stop = $end - 1)
#foreach($i in [0..$stop])
    LOOP ITERATION: $i
#end

Ответ 3

Чтобы добавить еще один вариант ответа Stephen Ostermiller, вы также можете создать цикл с нулевым индексом, используя $foreach.index. Если вы хотите выполнить цикл $n раз:

#foreach($unused in [1..$n])
    zero indexed: $foreach.index
#end

здесь $unused не используется, и вместо этого мы используем $foreach.index для нашего индекса, который начинается с 0.

Мы начинаем диапазон в 1 как включительно, и поэтому он будет циклически с $unused быть [1, 2, 3, 4, 5], тогда как $foreach.index является [0, 1, 2, 3, 4 ].

Подробнее см. руководство пользователя.