配列
Smartyでは配列を使用することもできます。配列の使い方はPHPでの使用方法と基本的に同じであり、「array」関数を使って配列を作成するには次のように記述します。
$配列変数名 = array(要素1, 要素2, ....);
変数を使う場合にはPHPスクリプトの中で「assign」メソッドの2番目の引数に文字列を指定していました。配列を利用する場合には2番目の引数に配列を指定します。例えば次のように記述します。
<?php
$smarty = new Smarty();
$smarty->assign('title', 'Fruit');
$smarty->assign('name', array('Apple', 'Lemon', 'Orange'));
$smarty->display('index.tpl');
?>
上記の場合は「assign」メソッドの2番目の引数に3つの要素を持つ配列を指定しています。
次に値を割り当てられるテンプレートファイル側の記述方法です。先ほどの場合は配列にキーを指定していませんので、配列の各要素はインデックス番号を使って取得します。具体的には次のように記述します。
{$配列変数名[インデックス番号]}
インデックス番号は0から開始されることに注意して下さい。テンプレートファイルには例えば次のように記述します。
<html>
<head>
<title>Smarty Test</title>
</head>
<body>
<h1>{$title}</h2>
<p>{$name[0]}</p>
<p>{$name[1]}</p>
<p>{$name[2]}</p>
</body>
</html>
PHPスクリプトからは3つの要素を持つ配列が割り当てられています。テンプレートファイルでは割り当てられた配列の各要素を参照するように記述しています。
サンプルプログラム
では簡単なサンプルプログラムを作成して試してみます。
<?php
require_once('Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = 'd:/smartysample/var/templates/';
$smarty->compile_dir = 'd:/smartysample/var/templates_c/';
$smarty->config_dir = 'd:/smartysample/var/configs/';
$smarty->cache_dir = 'd:/smartysample/var/cache/';
$smarty->assign('title', 'Fruit');
$smarty->assign('name', array('Apple', 'Lemon', 'Orange'));
$smarty->display('sample2-1.tpl');
?>
上記を「sample2-1.php」の名前で「(Apacheドキュメントルート)¥smarty¥var」に保存します。
{* Smarty var/sample2-1.tpl *}
<html>
<head>
<title>Smarty Test</title>
</head>
<body>
<h1>{$title}</h1>
<p>{$name[0]}</p>
<p>{$name[1]}</p>
<p>{$name[2]}</p>
</body>
</html>
上記を「sample2-1.tpl」の名前で「D:¥smartysample¥var¥templates」に保存します。
そしてブラウザから「http://localhost/smarty/var/sample2-1.php」へアクセスして下さい。
( Written by Tatsuo Ikura )
PHPBook