2

これは設計パターンの問題です。

私は CakePHP 2.1 で作業しており、プラグイン (FooPlugin) を作成しています。
アプリ内のコントローラーの拡張機能であるコントローラー (およびモデル) をプラグインに含めたいと思います。例: FooPlugin で FooUsersController として拡張された in があり、いくつかの Foo 固有のアクションがありますUsersController(私は基本的に、すべてが1つの中央ユーザー管理アプリに依存するプラグインの形で複数のアプリを構築しています)app/Controller

プラグイン内のすべてのコントローラーでFooAppController. しかし、私は FooAppController をバイパスし、代わりに FooUsersController が UsersController を直接拡張できるようにしたいと考えています。
これにより、プラグイン全体beforeFilterなどを使用する可能性が失われます...

私の質問:

  • これはプラグイン全体のbeforeFilter/だけではありbeforeRenderませんか?
  • FooAppController と UsersController の両方から機能を継承する一般的なパターンを見落としていますか? それとも、どちらかの選択肢に対処する必要がありますか?
  • 私が提案することは、大きなノーノーですか?または、私が従うパターンを認識している限り、まったく問題ありませんか?

よろしく、バート

4

2 に答える 2

0

簡単に使用できますApp::uses('MyController', 'MyPluginName.Controller');

2.0 のドキュメントによると: http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-files-from-plugins

次のように述べています。

プラグインでのクラスのロードは、ロード元のプラグインを指定する必要があることを除いて、アプリおよびコア クラスのロードとほとんど同じように機能します。

// Load the class Comment in app/Plugin/PluginName/Model/Comment.php
App::uses('Comment', 'PluginName.Model');

// Load the class CommentComponent in
// app/Plugin/PluginName/Controller/Component/CommentComponent.php
App::uses('CommentComponent', 'PluginName.Controller/Component');
于 2016-08-24T11:32:47.760 に答える
0

問題なくアプリコントローラーを拡張できます。実際、プラグイン全体のコールバックはもうありません。プラグインコントローラーにコンポーネントを追加して、おそらくこれの解決策としてプラグイン全体のコールバックを処理し、プラグインコントローラーをDRYに保つことができます

于 2012-09-13T20:11:31.023 に答える