web-dev-qa-db-ja.com

速度テンプレートの「for」ループ

速度テンプレートで 'for'ループを使用するには? で1週間前に同様の質問をすでに投稿しました。

だから...基本的に、速度テンプレートで「for」ループを使用することはできません。

整数4を保持する変数があるとします。その変数を使用して何かを4回表示したいとします。速度テンプレートでどのように行うのですか?

34
Moon

次のようにしてください:

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

コードはテストされていませんが、このように動作するはずです。

53
csupnig

受け入れられた答えのように#setを使用する必要はありません。次のようなものを使用できます。

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

インデックスをゼロにする場合は、範囲演算子内で1を減算できないため、1つの#setを使用する必要があります。

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

Stephen Ostermillerの答えに別のオプションを追加するために、$foreach.indexを使用してゼロインデックスループを作成することもできます。 $n回ループしたい場合:

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

ここでは、$unusedは使用されず、代わりに0から始まるインデックスに$foreach.indexを使用します。

範囲は1から始まり、包括的であるため、$unusedは[1、2、3、4、5]でループしますが、$foreach.indexは[0、1、2、3、 4]。

詳細については、 ユーザーガイド を参照してください。

4
Starwarswii