検索
連載

Smartyでテンプレートエンジンの威力を知る今から始める MySQL入門(11)(2/3 ページ)

Share
Tweet
LINE
Hatena

Smartyとsample8のインストール(2)

 以上の作業で、次のようなディレクトリやファイルが作成されます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 インストール後、Webブラウザで「http://HTTPDサーバ/sample8/smarty1.php」にアクセスし、動作を確認します。

画面1 smarty1.phpの動作確認
画面1 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版でご覧ください。 ***

画面2 smarty2.phpの動作画面
画面2 smarty2.phpの動作画面

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る