Smarty徹底入門(11):テンプレート内で繰り返し(1)
2005年04月19日-
前回紹介した、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同様出来るだけ使わない方が無難そうです。
最新のブログ記事(新着順)
- 小説表紙などに使えそうな商用可なフォント「になロマン」
- 筆で書いたようなカナ書体「筆竹仮名B」
- 無料・商用利用可な丸文字ピクセルフォント「マルミーニャM」
- スペースコブラ風フォント
- Next.jsのVercelから商用利用可能なフリー汎用フォント「Geist Font 」
- 無料で使えるいい感じの日本語フォント「しっぽり太ゴシック」
- CSSのみで実装された500種類のローディングアニメーション「CSS Loaders」
- 画像ホバーで様々なエフェクトをかけられる「Izmir」
- CSSのbox-shadowをGUIで生成できる「CSS Box Shadows Generator」
- 好きな画像や文字を埋め込んだQRコードをリアルタイムで作れるWEBツール
- 過去のエントリ