2016-10-26 3 views
1

Calling AppModel function in AppController for cakephpここで、OPがAppController内のAppModelから関数を使用できるかどうかを尋ねました。CakePHP 2 - AppControllerでのAppModel機能のロード

答えは、(コントローラではなく、別のモデルのでAppModelを使用することについて話しているので)実際には問題には触れません。

したがって、AppControllerの内部でこれを行うことは容認できますか?

$this->loadModel('AppModel'); 
$this->AppModel->my_function(); 

誰かがこれをやりたがっている理由は、AppControllerがすべてのリクエストで実行されるためです。毎回のリクエストであなたのDBが必要な場合、そのロジックはAppModel.phpに入るかもしれませんが、AppController.phpで実行されるかもしれません。

これはCake 2.0私たちが扱っているレガシーアプリケーションです。

+0

"DBを含むもの"とはどういう意味ですか?私たちがあなたの状況についてもっと知っていれば、その目標を達成するための適切な方法をお勧めするほうが簡単かもしれないと思います。 私は個人的には$ this - > {$ this-> modelClass} - > method() – makallio85

+0

@ makallio85のように呼んでいます。私が尋ねるのは、上記の方法でAppControllerでAppModelを使用することが受け入れられるかどうかということだけです。私はさまざまなアプローチがあることを理解しています。しかし、上で説明したものを使っても問題ありませんか? – Andy

+0

私はそのような論理を実装する理由を想像することはできません。しかし、これは主に意見に基づく質問だと思うので、私はこれにフラグを立てます。 – makallio85

答えて

2

すべてを正しく実行している間は、コントローラーで使用されているモデルを通じて既に使用可能であるため、AppModelをコントローラーにロードする必要はありません。実際にAppModelを呼び出すべきではありません。AppModelを拡張するモデル間で共通ロジックを共有するためです。

だからあなたAppControllerあなたはすでにこのようなあなたのAppModelで宣言されたあなたの機能にアクセスすることができるはずで: - 上記のコード{$this->modelClass}

$this->{$this->modelClass}->my_function(); 

ように、現在のコントローラで使用されているモデルクラスを決定しますAppControllerで簡単に使用できます。したがって、PagesControllerがある場合、これは$this->Page->my_function()と解釈されます。

これがうまくいかない場合は、Cakeを使ってどのように開発しているかに間違っていて、モデルの使い方を調べる必要があります。

関連する問題