最終更新: 2007-06-27 (水) 05:50:11
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

Zend Framework でテンプレートエンジンに Simplate を使う

目次

概要

Simplate は PHP の拡張モジュールとして動作する高速なテンプレートエンジンで、 Smarty と同じような記法が使えます。 Zend Framework のマニュアルに、Smarty をラップして使う Zend_View_Smarty クラス の簡単な例が載っていたので、 それを参考に Simplate をテンプレートエンジンに使えるようにしてみました。 標準の Zend_View では、

<?php echo $this->escape($this->foo) ?>

のようにビュースクリプトに書かなければなりませんが、このコンポーネントを使えば、

{$foo}

のように簡潔に書くことができます *1

インストール

アーカイブをダウンロードし、 include_path の通ったディレクトリで展開して下さい。
(sample/library のような各アプリケーションの library ディレクトリや、 ZendFramework-1.0.0-RC3/library ディレクトリなどで。)

$ cd ZendFramework-1.0.0-RC3/library
$ tar xvfz Revulo_View_Simplate-0.3.tar.gz

Simplate そのもののインストール手順については、 こちら のページを見て下さい。

使い方

このコンポーネントは ViewRenderer ヘルパー経由で登録して使います。 例えばブートストラップ (index.php) 中で、 フロントコントローラのインスタンスを作成した後に、 以下のように登録することができます。

$view = new Revulo_View_Simplate();
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->setView($view)
             ->setViewSuffix('tpl');

その他のタイミングで登録したい場合は、 ViewRenderer ヘルパーのマニュアル を参照して下さい。

設定

デリミタやキャッシュの設定を変更したい場合は、

$config = array(
    'left_delimiter'  => '{',
    'right_delimiter' => '}',
);
$view = new Revulo_View_Simplate($config);

のように、Revulo_View_Simplate クラスのオブジェクト作成時に設定することができます。

 

また、テンプレート及びコンパイルされたテンプレート用のディレクトリは、 それぞれ標準で以下のように設定されています。

テンプレート
application/views/scripts
コンパイルされたテンプレート
application/cache/templates

これを別のディレクトリに設定したい場合は、 Revulo_View_Simplate::setBasePath() メソッドをオーバーライドして下さい。

サンプル

動作確認用に簡単なサンプルを用意しました。 アーカイブをダウンロードし、 適当なディレクトリで p オプションを付けて展開して下さい。

$ cd sample
$ tar xvfzp Revulo_Sample_Simplate-0.3.tar.gz

あとは http://…/sample/html/ のような URL にアクセスすれば試すことができます。

ダウンロード

履歴

  • Version 0.3 (2007/06/26)
    • Zend Framework 1.0.0 RC3 で Zend_View_Interface が変更されたのに対応
  • Version 0.2 (2007/06/02)
    • ViewRenderer ヘルパーを利用するように変更
  • Version 0.1 (2007/05/26)
    • Zend Framework 0.9.3 以下の仕様に合わせたものをリリース
*1 デリミタを { } に設定し、自動的に HTML エスケープさせるパッチ を適用した場合です。

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS