zz log

zaininnari Blog

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();
の部分なくてもいけた