Zend_ViewでSmartyをラップする

これを知るまで、Contorollerで、Smartyクラスを生成して使っていたけど、

Zend_Viewのドキュメントに記載されていた、Smartyをラップする

Zend_Viewクラス(ex Zend_View_Smarty)を作成して、これを利用することで、

Smartyの便利さはそのままに、テンプレートへの値の設定がさらに楽に!!!


簡単に言うと、$key っていう変数に、$valueを設定しようとした場合、

$this->_smarty->assign($key, $value);

と書いていたのが、

$this->_view->$key = $value;

ってかけるようになるんです。

assignの記述で、よくスペルミスしていた私には、重宝する機能です。


smartyの設定(delimiterとか)も、連想配列にして、Zend_View_Smartyクラスの

生成時に、第2パラメタとして渡したら有効になります。

テンプレートへのパスも、setScriptPathではなく、生成時に設定した方が楽です。


すでに、Zendで、Smartyを使っている方でも、変更量は少なくてすみますので、

試す価値有りと思った方は、ぜひおためしくださーい。


この方法を採用していると、テンプレートエンジンを変更しようとおもった際の

ソースの改修もラッパークラスを変更するだけですみます。

テンプレートは大幅な改修になることは、避けられませんが。


DB操作にしても、変数に代入するイメージで、設定できるっていう

Zendの特徴を生かしたSmartyとの連携方法だと思います。


これをやったら、既存のZend_Viewのように、Zend Frameworkが、

Zend_View_Smartyを生成して、テンプレート特定して、画面表示までを

やってくれないかなーという欲がでてきました。

Zend_Controller_Actionを継承して、initViewあたりを再定義したら、

できそうだけど、他にもっと楽な方法がないか探して見ます。


存在しない、URLが指定された場合、action名の方は任意の処理を

入れれる方法がわかっているのですが、controller名が存在しない場合は、

エラーになるだけなので、ここをどうにかしたいところです。


Front Controllerを継承したクラスを作るのはちょっとおっくうなので、他の方法で。

コメント 停止中

%d人のブロガーが「いいね」をつけました。