Smarty2を使ってforサイクルと同じようなことができるかどうか知りたいです。
私はこのようなものが欲しいです:
<select>
{for $i from 1950 to 2000 }
<option value="{$i}">{$i}</option>
{/for}
</select>
もしあれば、どの関数を使うべきですか?
Smarty2を使ってforサイクルと同じようなことができるかどうか知りたいです。
私はこのようなものが欲しいです:
<select>
{for $i from 1950 to 2000 }
<option value="{$i}">{$i}</option>
{/for}
</select>
もしあれば、どの関数を使うべきですか?
smartyのドキュメントで説明されているように、{section}を試してください
ちなみに:{html_options}関数を確認してください:html_options docs
PHPの範囲関数を使用できます。
<select>
{foreach item=i from=1950|@range:2000}
<option value="{$i}">{$i}</option>
{/foreach}
</select>
これは古い質問であり、すでに受け入れられた答えがありますが、答えは基本的に単なるリンクでした。今後の訪問者が関連する例を見つけるためにドキュメントをトロールする必要がないように、これをより完全な回答として投稿しました。
Smarty 2では、{section}
非常に幅広いユースケースをカバーするタグを使用してループが実現されます。PHPfor()
ループに相当するものを作成するには、次の構文を使用します。
<select>
{section name="i" start=1950 loop=2001}
<option value="{$smarty.section.i.index}">{$smarty.section.i.index}</option>
{/section}
</select>
loop
プロパティは、Smartyがループから抜け出す数を参照しているため、反復する最終的な数より1大きい必要があることに注意してください。
補遺:これは質問(Smarty 2に関するもの)とは直接関係ありませんが、 Smarty 3がタグを導入した
ことは注目に値する{for}
ので、次のことを実行できます。これははるかに簡単です。
<select>
{for $i=1950 to 2000}
<option value="{$i}">{$i}</option>
{/for}
</select>