cakephp 1.2 でsmartyを使う
今までは、cakephp1.1に
CakePHPでSmartyのススメ - ホームページ制作日誌
を参考にsmartyを導入していたが、
cakephp 1.2で、
smartyをインストールさせるのが、面倒だったので、
探してみたら、↓を発見!
ECWorks Blog(仮): CakePHP RC2公開とSmartyViewの影響について
readme.txtによると、MIT License - Wikipediaだった。
- -
■ご利用条件
- -
SmartyViewクラスおよび添付ファイル一式は、MITライセンスに準拠いたします。
The SmartyView source code or attached files are distributed under THE MIT
LICENSE.
インストールは、圧縮ファイルを展開して、中身をコピーで大丈夫。
(しかも、動作確認のためのファイルも付いていた!)
readme.txtの設定では、
利用するコントローラクラスに、
var $view = 'Smarty';
をしていたが、私は忘れっぽいので、
〜/app/app_controller.php を置き、
class AppController extends Controller { var $view = 'Smarty'; }
と共有化させた。
また、
サブディレクトリは使わなかったので、
$this->subDir = 'smarty'; $this->ext= '.tpl'; $this->layoutPath = 'smarty'; //ver. 1.2's property
を
//$this->subDir = 'smarty'; $this->ext= '.tpl'; //$this->layoutPath = 'smarty'; //ver. 1.2's property
に変更した。
また、
CakePHPでSmartyのススメ - ホームページ制作日誌の
CakePHPでSmartyのススメ - ホームページ制作日誌より引用:
viewに配列変換のメソッドを実装する
これは call_user_func_array 関数を利用したもので、通常の配列の生成の方法とは違うが、入れ子にする事ができ、多次元配列も生成できる。
当スニペットではこちらを組み込んでいる。
の機能がすごく便利なので、
これもなんとかして組み込んだ。
ECWorks Blog(仮): CakePHP RC2公開とSmartyViewの影響についてのファイル
/app/views/smarty.php
を開き、
CakePHPでSmartyのススメ - ホームページ制作日誌で公開されているsmarty_ex.phpの121行目から
/** * 連想配列を生成する * * @return array */ function aa() { $args = func_get_args(); return call_user_func_array('aa', $args); }
をコピーし、
$this->smarty->assign_by_ref('view', $this);
を探し、
//$this->smarty->assign_by_ref('view', $this); $this->smarty->assign_by_ref('this', $this); //view→thisに変更
と変更する。
細かい部分は見てないけど、とりあえず動いた。
2008/07/05 追記
$this->register_functions();
の部分なくてもいけた