web-dev-qa-db-fra.com

Boucle "for" dans le modèle de vitesse

J'ai déjà posté une question similaire il y a une semaine sur Comment utiliser la boucle 'for' dans le modèle de vitesse? .

Donc ... fondamentalement, je ne peux pas utiliser la boucle "for" dans un modèle de vélocité.

Disons que j'ai une variable qui contient un entier 4. Je veux afficher quelque chose quatre fois en utilisant cette variable. Comment le faire dans un modèle de vitesse?

34
Moon

Essayez de le faire comme ceci:

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

Le code n'a pas été testé, mais il devrait fonctionner comme ceci.

53
csupnig

Vous n'êtes pas obligé d'utiliser le #set comme la réponse acceptée. Vous pouvez utiliser quelque chose comme ceci:

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

Si vous voulez indexer zéro, vous devez utiliser un #set car vous ne pouvez pas en soustraire un dans l'opérateur de plage:

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

Juste pour ajouter une autre option à la réponse de Stephen Ostermiller, vous pouvez également créer une boucle zéro indexée en utilisant $foreach.index. Si vous voulez boucler $n fois:

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

ici, $unused n'est pas utilisé, et nous utilisons plutôt $foreach.index pour notre index, qui commence à 0.

Nous commençons la plage à 1 car elle est inclusive, et donc elle bouclera avec $unused étant [1, 2, 3, 4, 5], tandis que $foreach.index est [0, 1, 2, 3, 4].

Voir le guide de l'utilisateur pour en savoir plus.

4
Starwarswii