Smartyとsample8のインストール(2)
以上の作業で、次のようなディレクトリやファイルが作成されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
インストール後、Webブラウザで「http://HTTPDサーバ/sample8/smarty1.php」にアクセスし、動作を確認します。
Smartyの機能を知る
Smartyの基本「smarty1.php/template1.tpl」
「smarty1.php」に対し、「templates/template1.tpl」をテンプレートとして利用します。ここではtemplatesディレクトリ下の「○○.tpl」として保存されたものをテンプレートとして使用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
テンプレートディレクトリの指定やキャッシュディレクトリの指定などSmartyの動作に必要なディレクトリの指定は、smarty1.phpの10〜13行目のように行います。
なお、Smartyのキャッシュ機能を利用する場合は、16行目のように「$smarty->caching = true」とする必要があります。しかし製作過程ではキャッシュデータが更新されず、スクリプトの修正が即座に反映されない恐れがあるため、本稿ではこれらをコメントアウトし、キャッシュ機能を無効にしています。
そのほか、Smartyの基本的な処理は以下のとおりです。
1)Smartyライブラリの読み込み
require_once('/..pathto../Smarty.class.php');
↓
2)Smartyインスタンスの作成
$smarty = new Smarty();
↓
3)テンプレートの変数に値を割り当てる
$smarty- >assign("変数名", "値");
↓
4)テンプレートを指定し表示
$smarty- >display("テンプレートファイル");
テンプレートの変数に値を割り当てる際には、連想配列「$ref」を使って一気に指定することができます。連想配列を使用する場合、テンプレートは必要な変数を$refから適宜取り出すようになっています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以上の処理で、テンプレートファイル中の「{$変数名}」が「値」に置き換わって表示されます。
なお本稿のテンプレートでは、ロジックの値で置き換わる個所(プレースホルダーと呼びます)には「{$変数名|escape}」を用います。引き渡された値に対し、「&」「"」「'」「<」「>」といったHTMLで特殊な意味を持つ文字について、escapeを用いてエスケープ処理を実施しています。
また、テンプレート中でのコメントには「{* 〜 *}」を利用します。HTMLコメント「<!-- 〜 -->」も使用できますが、「{* 〜 *}」を使ったコメントはコンパイル後のコードに出力されません。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ループ処理と配列「smarty2.php/template2.tpl」
配列のようなデータを一覧表示させる場合には、foreachを使ったループ処理が重宝します。foreachでは、引き渡された配列の要素の数だけ、繰り返しを実行します。またforeachelseには、「from=[配列]」で指定された配列が空の場合の処理を指定することができます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
smarty2.phpでは、19行目のように4つの要素を持つ配列を作成し、template2.tplに引き渡しています。template2.tplでは引き渡された配列をforeachで展開し、「item=[アイテム]」で指定されたアイテム名(ここでは「value」)で配列の要素にアクセスしています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.