test

CakePHP Note

ビヘイビア

UPDATE:2009.01.09

モデルを拡張します。ビヘイビアではモデルでよく使う機能をまとめたり、データの入出力の間で処理を行なうようにbeforeFindやafterSaveなどのコールバックメソッドを実装することができます。組み込みのビヘイビアとしてTranslateBehavior, TreeBehavior, AclBehavior があります。

ビヘイビアを作成する

ビヘイビアはModelBehaviorを継承したクラスを作成し、models/behaviorsディレクトリに保存します。ビヘイビアが使われる時にはsetupメソッドが呼ばれます。setupメソッドにはモデルからモデル自身と追加パラメータが渡されます。

class TreeBehavior extends ModelBehavior { 
     var $settings = array(); 
     
    function setup(&$model, $config = array()) { 
        $this->settings = $config; 
    } 
    
     function myCustomMethod(&$model, $data = array()) { 
        return array_merge($model->data, $data); 
     } 
     
    function afterFind(&$model, $results, $primary){
        //コールバック
        $results = array_reverse($results);
        return $results;
    }

} 

ビヘイビアを使う

ビヘイビアを使うには使用するビヘイビア名をモデルの$actsAs属性にセットします。

class Post extends AppModel { 
    var $actsAs = array('Tree'); 
    
    function doSomething($childen = null) { 
        $this->myCustomMethod(array(‘childen’=> $childen)); 
    }
} 

ビヘイビアのメソッドを呼ぶ時の引数で$modelを渡していない事に注意して下さい。
ビヘイビアで定義した関数の第1引数(&$model)はフレームワークが処理するので指定する必要がありません。第2引数以降を指定します。

ビヘイビアに初期化のためのsetupメソッドに渡すデータも指定出来ます。

class Post extends AppModel { 
    var $actsAs = array('Tree'=>array("field_name"=>"parent_name")); 
    
    function doSomething($childen = null) { 
        $this->myCustomMethod(array(‘childen’=> $childen)); 
    }
}