Smartyの機能を知る(2)
ループ処理と連想配列「smarty3.php/template3.tpl」
Smartyのテンプレートでループ処理を行うには、foreach以外にsectionを利用することもできます。foreachでは1つの配列しか扱うことができませんが、その代わり連想配列を簡単に扱うことができます。通常配列はインデックス番号で各要素を取り出しますが、連想配列ではキーを用いて対応する値を取り出すことができます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
smarty3.phpでは、19行目のように連想配列を作成しています。連想配列$dataでは、例えばキーに「Sun」を指定することで、値「日曜日」にアクセスすることができます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
foreachでは、キーを取り出すために、「key=[キー]」で指定されたキー名(ここでは「key」)を利用します。値の取り出しには先ほどのtemplate2.tpl同様、{$value}を利用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
foreachのネスト(入れ子)「smarty4.php/template4.tpl」「smarty5.php/template5.tpl」
連想配列を配列化したような場合、foreachのネスト(入れ子)を用いて各要素を展開することもできます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
連想配列のキーがあらかじめ分かっている場合には、1つ目のforeachで取り出された連想配列に対し、キーによって直接値にアクセスすることができます(例えば「item=[アイテム]」なら「$アイテム.キー」)。
template5.tplではforeachで$dataを展開し、連想配列を$value01で取り出しています。$value01.nameでキー「name」に対する値、$value01.priceでキー「price」に対する値、$value01.qtyでキー「qty」に対する値にアクセスすることができます。キーが分かっていれば、foreachのネストは不要です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
smarty5.phpでは、30行目のテンプレートの指定が異なるだけで、連想配列の配列化をはじめとするそのほかの手順はsmarty4.phpと同様です。
template5.tplでは、<table>〜</table>を使って、要素をテーブル表記に加工しています。連想配列のキーがデザイン作業側で分かっているケースでは、要素数や各要素の名称もロジック制作者から伝えられていることが多く、こうしたテーブル表記が多く用いられます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以上、PHPのテンプレートエンジンとして広く利用されているSmartyの基本構文について紹介しました。
最終回となる次回では、Smartyを活用し、前回までに作成した「簡易オンラインストア」のロジックとデザインを分離する方法を紹介します。さらに、テンプレートを活用して携帯電話用コンテンツとPC用コンテンツを同時に実現する方法にも触れます。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.