ここは以前の ethna.jp サイトを表示したものです。ここにあるドキュメントはバージョン2.6以降更新されません。
最新のドキュメントは 現在のethna.jp を閲覧してください。現ドキュメントが整備されるまでは、ここを閲覧してください。
Ethna > ドキュメント > 開発マニュアル > Ethna_Rendererの使い方

Ethna_Rendererの使い方

はじめに

  • Ethnaでは,レンダラが指定されたテンプレートを読み込み,処理されたデータを埋め込んでページを生成しています.
  • ページ生成の処理を行うレンダラは,開発者の好みに合わせて変更することが可能です.
  • デフォルトでは,レンダラとしてSmartyが使われています.

Ethna_Rendererについて

  • Ethna_Rendererはバージョン2.3.0から実装されています.
  • 事実上開発途上で、smartyを使った例しかありません。今後Ethna_Renderer_Flexyなどが用意される予定です。

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());
   }