2012/09/07

[CakePHP]コンポーネント内でモデルを使う

コンポーネント内でモデルを使いたい場合、通常なら
App::uses('MyModel', 'Model');
$model = new MyModel();
すればいいんだけど、そのインスタンス化するモデル内でApp::usesを使っていたら、そこがエラーになってしまった。
原因を調べてたところ、モデルを使う他の方法を見つけたのでそちらを試す。
参考:コンポーネントでモデルを使う - by shigemk2
//コンポーネントファイル内
pulic function initialize(Controller $controller){
 //コントローラを変数に格納
 $this->controller = $controller;
}

public function myMethod(){
 //コントローラ内で使用しているモデルを使う
 $this->controler->MyModel->find('hoshii-data');
}
コントローラとの関連が濃すぎると感じたが、こういうやり方があんだなーと感心しつつ、真似して実装。
使ってみたら、いやー便利!
と思ったところで、上記のページの最後の行を見落としてたことに気づいた。
追記:基本的にコンポーネント内でモデルを使う事は推奨されていないので、極力使わない方向でいく。
あれー!
とりあえずはApp::usesがエラーになった理由&なんでコンポーネントで使っちゃだめなの?&他の方法を探そう

0 件のコメント:

コメントを投稿