2012/09/07

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

コンポーネント内でモデルを使いたい場合、通常なら
  1. App::uses('MyModel''Model');  
  2. $model = new MyModel();  
すればいいんだけど、そのインスタンス化するモデル内でApp::usesを使っていたら、そこがエラーになってしまった。
原因を調べてたところ、モデルを使う他の方法を見つけたのでそちらを試す。
参考:コンポーネントでモデルを使う - by shigemk2
  1. //コンポーネントファイル内  
  2. pulic function initialize(Controller $controller){  
  3.  //コントローラを変数に格納  
  4.  $this->controller = $controller;  
  5. }  
  6.   
  7. public function myMethod(){  
  8.  //コントローラ内で使用しているモデルを使う  
  9.  $this->controler->MyModel->find('hoshii-data');  
  10. }  
コントローラとの関連が濃すぎると感じたが、こういうやり方があんだなーと感心しつつ、真似して実装。
使ってみたら、いやー便利!
と思ったところで、上記のページの最後の行を見落としてたことに気づいた。
追記:基本的にコンポーネント内でモデルを使う事は推奨されていないので、極力使わない方向でいく。
あれー!
とりあえずはApp::usesがエラーになった理由&なんでコンポーネントで使っちゃだめなの?&他の方法を探そう

0 件のコメント:

コメントを投稿