4

Smarty2を使ってforサイクルと同じようなことができるかどうか知りたいです。

私はこのようなものが欲しいです:

<select>
{for $i from 1950 to 2000 }
   <option value="{$i}">{$i}</option>
{/for}
</select>

もしあれば、どの関数を使うべきですか?

4

3 に答える 3

6

smartyのドキュメントで説明されているように、{section}を試してください

ちなみに:{html_options}関数を確認してください:html_options docs

于 2011-04-16T18:05:48.690 に答える
4

PHPの範囲関数を使用できます。

<select>
    {foreach item=i from=1950|@range:2000}
        <option value="{$i}">{$i}</option>
    {/foreach}
</select>
于 2013-10-18T00:21:21.367 に答える
3

これは古い質問であり、すでに受け入れられた答えがありますが、答えは基本的に単なるリンクでした。今後の訪問者が関連する例を見つけるためにドキュメントをトロールする必要がないように、これをより完全な回答として投稿しました。


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>
于 2019-06-20T13:01:53.917 に答える