目次

Ethna_Rendererの使い方

Ethna_Rendererの使い方

はじめに

Ethna_Rendererについて

Ethna_Renderer_Smartyについて

Ethna_Renderer_SmartyはSmartyをEthna_Rendererの仕様に合わせてラッピングしたものです. 基本的にはSmartyと同じ機能が使えます.(まだ未実装のものもあります.近々実装の予定です.)

他のテンプレートエンジンの実装の仕方

Smarty以外のテンプレートエンジンを使いたい場合,Ethna_Rendererを継承して,新しいレンダラクラスをつくります. 基本的な流れは,以下のとおりです.

  1. Ethna_Rendererを継承して,独自のレンダラクラスをつくる.
  2. ($App)_Controllerで1で作成したレンダラクラスをインクルードする.
  3. ($App)_Controllerのクラスファクトリ($class)の'renderer'に1で作成したレンダラクラスを指定する.

テンプレートエンジンのデフォルト設定

テンプレートエンジンの共通変数などを設定する場合は、アプリケーションのビューの基底クラス Appid_ViewClass にある _setDefault() メソッドを実装してください。

function _setDefault(&$renderer)
{
    //Rendererからテンプレートエンジンを取得
    $smarty =& $renderer->getEngine();

    // セッション情報をセット
    $smarty->assign_by_ref('session_name', session_name());
    $smarty->assign_by_ref('session_id', session_id());

    // smartyテンプレートのデリミタを変更
    $smarty->left_delimiter = '<!--{';
    $smarty->right_delimiter = '}-->';
}

$renderer は Ethna_Renderer の継承クラスのインスタンスで、デフォルトでは Ethna_Renderer_Smarty です。 getEngine() メソッドで smarty のインスタンスを取得することができます。

Ethna-2.1.2 まで

上の設定は Ethna-2.3.0 以降で Renderer が導入された場合の話ですが、 2.1.2 以前の場合は、アプリケーションのコントローラ Appid_Controller の _setDefaultTemplateEngine() メソッドで以下のように設定してください。 ($smartyはそのままsmartyオブジェクトです)

function _setDefaultTemplateEngine(&$smarty)
   {
       $smarty->assign_by_ref('session_name', session_name());
       $smarty->assign_by_ref('session_id', session_id());
   }