2012-12-13 12 views
19

CakePHPのコンポーネントでモデルを使用するにはどうすればよいですか?コンポーネント内のモデルを使用する

コントローラで

あなたは

public $uses = array(...); 

を使用することができますが、それはコンポーネントでは動作しません。

何がありますか?

答えて

32

このコードを試してみてください。

$model = ClassRegistry::init('Yourmodel'); 

モデルを使用した単純なクエリコンポーネントに

$result= $model->find('all'); 
+0

この作品、あなたはwelocomeが – AgeDeO

+0

ありがとう:あなたは私の命を救っD:D –

+0

良く 'Yourmodel'(大文字) – mark

13

あなたはこのようにそれを行うことができ:

$this->ModelName = ClassRegistry::init('ModelName'); 

しかし、それはあなたがドンとしていますコンポーネント内のモデルを使用しないでください。

+0

をあなたがアドバイスコンポーネント内のモデルを使用しないためになぜ? –

+0

コンポーネントで複数のモデルを使用するときは、ビヘイビアを使用する方がよい場合があります。 – Alvaro

+2

それは常に特定のユースケースに依存します。しかし、質問はあまりにも明らかにはなりません。あなたが不運なので、 – mark

2

現在のモデルが必要な場合は、コンポーネントのコールバックinitialize()またはstartup()を使用できます。

public function initialize(Controller $controller) { 
    $this->Controller = $controller; 
    $this->Model = $this->Controller->{$this->Controller->modelClass}; 
    $this->modelAlias = $this->Model->alias; 
    parent::initialize($controller); 
} 

これで、コンポーネント内のどこにでもモデルにアクセスできます。

public function countAllItems() { 
    return $this->Model->find('count'); 
} 
関連する問題