変数の利用
Smartyで利用できる変数はいくつか種類があります。まずはテンプレートファイルに記述した1つの変数に対してPHPスクリプトから1つの値を割り当てる方法から確認していきます。
変数名
変数名はPHPにおける変数名の規則と同じで次の通りとなっています。
1. 変数名の先頭にはドルマーク($)を付ける 2. $マークの後の1文字目は英字かアンダースコアを付ける (例 $abc,や$_a9 は○。$9abは×) 3. それ以降の文字は英字、数字、アンダースコアのいずれかを付ける 4. 変数名における英字を使った場合の大文字と小文字は別の文字として扱われる (例 $abcと$Abcは別の変数名)
ただしテンプレートファイル内でSmartyに関するタグ(テンプレートタグ)には「{」と「}」と言う区切り文字(デリミタ)で囲う必要があります。その為、テンプレートファイル内に変数を記述する場合は次のようになります。
{$変数名}
変数の記述
テンプレートファイルはクライアントに表示される画面を記述します。通常はHTMLやXHTMLの形式で静的コンテンツの部分を記述し、その中で実行時に値を決めたい部分に変数を記述します。
<html> <head> <title>Smarty Test</title> </head> <body> <h1>{$title}</h2> <p>{$msg}</p> </body> </html>
上記では {$title} と {$msg} の二つの変数を利用しています。1つのテンプレートファイル内で複数の変数を利用することができます。
テンプレートファイル内ではデフォルトのデリミタである「{」と「}」で囲まれたテンプレートタグ以外は全て静的なコンテンツということになります。テンプレートファイル内にスタイルシートやJavaScriptを記述する場合などは「{」と「}」を使用するのでSmartyのデリミタと混同してしまいます。このような場合はデリミタをデフォルトの「{」と「}」から変更することも可能です。
変数に値を割り当てる
テンプレートファイル内に記述された変数に対し、実行時に値を割り当てるにはPHPスクリプトファイル内でSmartyクラスのオブジェクトに対し「assign」メソッドを使って値を割り当てます。
assign void assign ( string varname, mixed var)
テンプレート変数名/値のペアを明示的に指定するか、それらが格納された連想 配列を指定します。 引数: varname 変数名 var 割り当てる値
1番目の引数にテンプレートファイル内に記述した変数名、2番目の引数に値を指定します。2番目の引数には固定の値だけではなく配列などが記述できます。(配列を使って記述方法は次のページ以降で確認します)。
「assign」メソッドは1つの変数に対して1回実行します。変数が複数あれば変数の数だけ実行することになります。単純な例では次のようになります。
<?php $smarty = new Smarty(); $smarty->assign('title', 'Test'); $smarty->assign('msg', 'Good Morning'); $smarty->display('index.tpl'); ?>
サンプルプログラム
では簡単なサンプルプログラムを作成して試してみます。
<?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', 'var test'); $smarty->assign('msg', 'Good Morning'); $smarty->display('sample1-1.tpl'); ?>
上記を「sample1-1.php」の名前で「(Apacheドキュメントルート)¥smarty¥var」に保存します。
{* Smarty var/sample1-1.tpl *} <html> <head> <title>Smarty Test</title> </head> <body> <h1>{$title}</h1> <p>{$msg}</p> </body> </html>
上記を「sample1-1.tpl」の名前で「D:¥smartysample¥var¥templates」に保存します。
そしてブラウザから「http://localhost/smarty/var/sample1-1.php」へアクセスして下さい。
PHPスクリプトファイル内でテンプレートファイル内の変数に値を割り当てています。そのテンプレートから作成された画面がクライアント側に表示されています。
( Written by Tatsuo Ikura )