这是一个设计模式问题。
我正在使用CakePHP 2.1,我正在编写插件(FooPlugin)。
我希望插件包含控制器(和模型),它们是应用程序中控制器的扩展。例如:我在UsersController
中有一个app/Controller
,它在FooPlugin中作为FooUsersController扩展,具有一些特定于Foo的操作。 (我基本上是以插件的形式构建多个应用程序,这些应用程序都依赖于一个中央用户管理应用程序)
通常的做法(我推测)让插件中的所有控制器扩展FooAppController
。但我想绕过FooAppController并让FooUsersController直接扩展UsersController。
这打破了使用插件范围beforeFilter
等...
我的问题:
beforeFilter
/ beforeRender
?亲切的问候, 巴特
答案 0 :(得分:0)
你可以扩展应用程序控制器没有任何问题,确实没有插件式回调,你可以添加一个组件到插件控制器来处理插件范围的回调可能作为解决方案,并仍然保持你的插件控制器DRY
答案 1 :(得分: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');