前の記事 ≪:Smarty徹底入門(10):テンプレート内で if 文
次の記事 ≫:Smarty徹底入門(12):テンプレート内で繰り返し(2)

Smarty徹底入門(11):テンプレート内で繰り返し(1)

2005年04月19日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法

前回紹介した、if があるのだから繰り返しもあります。

foreach という構文を使います。これはphpのforeach とは使い勝手が違います。

----
{foreach from=$data key="key" item="value" name="test"}
{if $smarty.foreach.test.first}
最初:{$key}:{$value}
{elseif $smarty.foreach.test.last}
最後:{$key}:{$value}
{else}
{$smarty.foreach.test.iteration}:{$key}:{$value}

{/if}
{foreachelse}
データがありません
{/foreach}
{$smarty.foreach.test.total}件のデータ

----

foreach from=$data key="key" item="value" name="test"
ですが、

まず、from で、どの配列をループさせるかを指定します。
次に、key , item にそれぞれ、キー名、値名を指定してやります。
name はループ自体の名前をつけてやってあとでアクセスする際に使います。

これで、ループ内で、{$key} {$value} が使えます。

また、ループ内では以下の特殊変数が使えます。
$smarty.foreach.test.first … 最初の要素かどうか
$smarty.foreach.test.last … 最後の要素かどうか
$smarty.foreach.test.iteration … 現在のインデクス

foreach.test. のように test となっていますが、これは foreach で最初に

name="test"

として指定したため、ここで指定しています。

{foreachelse}

によって、データが空だった場合においての出力を指定出来ます。
テンプレなのにいろいろ出来ますね。
これがやはりSmartyの魅力でしょう。

ただ、ロジックを入れすぎると見難くなるのでif同様出来るだけ使わない方が無難そうです。

関連の記事検索:smarty
スポンサード リンク

By.KJ : 2005年04月19日 20:43 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)