петля for в шаблоне скорости - PullRequest
34 голосов
/ 20 апреля 2011

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

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

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

Ответы [ 3 ]

53 голосов
/ 20 апреля 2011

Попробуйте сделать это так:

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

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

33 голосов
/ 13 мая 2013

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

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

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

#set($stop = $end - 1)
#foreach($i in [0..$stop])
    LOOP ITERATION: $i
#end
4 голосов
/ 21 июля 2017

Просто чтобы добавить еще один вариант ответа Стивена Остермиллера, вы также можете создать цикл с нулевым индексом, используя $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 ].

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

...