こんにちは、さるまりんです。
久しぶりのSmartyの小ネタです。
タイトル通りSmartyのforeach
に渡された配列に何もない場合に処理を分岐したい時は{foreachelse}
を使います。
{foreach from=配列 item=繰り返しの要素}
配列が空でない時の処理
{foreachelse}
配列が空の時の処理
{/foreach}
利用例です。
$selectedItems
は選択された「もの」を格納する配列です。$selectedItems
に要素が設定されている場合はそれらを表示し、$selectedItems
が空の場合は「何も選択されていません。」の文字列を表示します。
{foreach from=$selectedItems item=item name=itemloop}
<p>{$smarty.foreach.itemloop.iteration} - {$item}</p>
{foreachelse}
<p>何も選択されていません。</p>
{/foreach}
例えば$selectedItems
がこのようなデータを持っているとします。
$selectedItems = ['お花', 'コイン', 'ハンマー'];
上記のコードは次のようなhtml
になります。
<p>1 - お花</p>
<p>2 - コイン</p>
<p>3 - ハンマー</p>
以前書かせてもらいました$smarty.foreach.ループ名.iteration
は繰り返しの何回目かを表します。
これが$selectedItems
が空の場合は次のようなhtml
になります。
<p>何も選択されていません。</p>
知っているとちょっと便利なので覚えるためにメモでした。
読んでくださってありがとうございました。
それではまた!