2012年12月19日水曜日

[cakephp 1.3] コンポーネントをViewから使う

こういうコンポーネントをViewからコールする
class UtilsComponent extends Object {
    function pdate($id) {
        $Picture = ClassRegistry::init('Picture');
        $tmp = $Picture->read('modified',$id);
        return $tmp['Picture']['modified'];
    }
}
同じ名前のヘルパーを作成する。このヘルパーを通してコンポーネントをコールする。
App::import('Component','Utils');
class UtilsHelper extends AppHelper {
    function __call($methodName, $args) {
        $utils = new UtilsComponent();
        return call_user_func_array(array($utils, $methodName), $args);
    }

    //もちろんこのヘルパー内に他の関数を書いてもよい。
}
上記により、UtilsHelperに存在しない関数はUtilsComponentの呼び出しに変換される
コントローラで
var $components = array('Utils'... その他のコンポーネント);
var $helpers = array('Utils', ...その他のヘルパー);
と定義しておけば、ビューからは

$this->Utils->共通コンポーネントの関数()

と呼び出すことで、コンポーネントの関数を呼び出すことができる。

0 件のコメント:

コメントを投稿