コンポーネント化したテンプレート (ヒント & 裏ワザ) - PHPプロ!マニュアル

Smartyマニュアル

ヒント & 裏ワザ - コンポーネント化したテンプレート

コンポーネント化したテンプレート

習慣的に、アプリケーションにテンプレートをプログラミングする手順は次のように進みます。 はじめに php アプリケーションにおいて変数を蓄積します (おそらくデータベースのクエリーによって)。それから Smarty オブジェクトのインスタンスを作成して変数を割り当て (assign() )、 テンプレートを表示 (display() ) します。仮に株式相場表示を行うテンプレートがあったとしましょう。 これは php アプリケーションにより株式情報のデータを収集し、 テンプレートにこれらの変数を割り当てて表示します。 もし、前もってデータを取得する事を気にせずに、 テンプレートを単にインクルードする事で株式相場表示をアプリケーションに追加できれば良いと思いませんか?

これは、内容をフェッチし、テンプレート変数に割り当てるための カスタムプラグインを書くことで実現できます

例 18-7. コンポーネント化したテンプレート

function.load_ticker.php - このファイルを プラグインのディレクトリ においてください。

<?php

// 株式情報のデータを取得するための関数を用意します
function fetch_ticker($symbol)
{
   
// 様々なリソースから $ticker_info を
   // 取得するロジックをここに記述します
   
return $ticker_info;
}

function 
smarty_function_load_ticker($params, &$smarty)
{
   
// 関数をコールします
   
$ticker_info fetch_ticker($params['symbol']);

   
// テンプレート変数を割り当てます
   
$smarty->assign($params['assign'], $ticker_info);
}
?>

index.tpl

{load_ticker symbol='SMARTY' assign='ticker'}

銘柄: {$ticker.name} 株価: {$ticker.price}

{include_php}{include} および {php} も参照してください。



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報