今回ご紹介する関数はこちら!
【foreach】
{foreach}{/foreach} この二つはセットで使用します。
どんなときに使うかと言いますと。
指定した配列要素を1つ1つ取り出す時などに使用します。(さらっ
{foreach}関数では必須属性が定められています。
必須の属性は
「from」属性には処理対象の配列が格納されている変数名を、「item」属性には配列要素を格納している変数名を記述します。
smartyには同じ繰り返し処理で{section}があります。
こちらはPHPでforループを行うように処理をさせることが出来ます。
今回説明した{foreach}よりも便利で汎用性が高いと思いますので次回は{section}について解説したいと思いますので、お楽しみに!
【foreach】
{foreach}{/foreach} この二つはセットで使用します。
どんなときに使うかと言いますと。
指定した配列要素を1つ1つ取り出す時などに使用します。(さらっ
{foreach}関数では必須属性が定められています。
必須の属性は
from
と item
です。「from」属性には処理対象の配列が格納されている変数名を、「item」属性には配列要素を格納している変数名を記述します。
必須ではないですが「key」属性にはキーを格納する変数名を記述します。sample.php
基本的な書式
{foreach from=配列変数 item=要素を格納する変数}Key属性を取得する場合
処理 {/foreach}
{foreach from=配列変数 item=要素を格納する変数 key=キーを格納する変数}前回説明を省いた「assign」メソッドについて少し。
処理 {/foreach}
テンプレート変数名/値のペアを明示的に指定するか、それらが格納された連想配列を指定します。
Smartyオブジェクト->assign(変数名,値);
のように使います。
ではサンプルを一つ
<a href="templates/index.tpl">index</a><?phpindex.tpl
// Smartyインクルード
require_once('Smarty.class.php');
// Smarty生成
$smarty = new Smarty();
// ディレクトリ指定
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
//タイトル
$smarty->assign('title', 'foreachのサンプル');
//連想配列
$data = array(
"no1"=>"名前1",
"no2"=>"名前2",
"no3"=>"名前3",
"no4"=>"名前4",
"no5"=>"名前5",
"no6"=>"名前6",
"no7"=>"名前7"
);
$smarty->assign('date_no', $data);
// ディスプレイ表示
$smarty->display('index.tpl');
?>
<html>出力結果
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>smartyサンプル01</title>
</head>
<body>
<h1>{$title}</h1>
<p>---------foreachを使わない出力---------</p>
<p>表示例1:{$date_no.no1}</p>
<p>表示例1:{$date_no.no2}</p>
<p>表示例1:{$date_no.no3}</p>
<p>表示例1:{$date_no.no4}</p>
<p>表示例1:{$date_no.no5}</p>
<p>表示例1:{$date_no.no6}</p>
<p>表示例1:{$date_no.no7}</p>
<p>---------foreachを使う出力---------</p>
{foreach from=$date_no key=hoge item=var}
//Key及びItemを表示
<p>表示例2:{$hoge}:{$var}</p>
{/foreach}
</body>
</html>
のようになります。foreachのサンプル
---------foreachを使わない出力---------
表示例1:名前1
表示例1:名前2
表示例1:名前3
表示例1:名前4
表示例1:名前5
表示例1:名前6
表示例1:名前7
---------foreachを使う出力---------
表示例2:no1:名前1
表示例2:no2:名前2
表示例2:no3:名前3
表示例2:no4:名前4
表示例2:no5:名前5
表示例2:no6:名前6
表示例2:no7:名前7
smartyには同じ繰り返し処理で{section}があります。
こちらはPHPでforループを行うように処理をさせることが出来ます。
今回説明した{foreach}よりも便利で汎用性が高いと思いますので次回は{section}について解説したいと思いますので、お楽しみに!