RWS*_*RWS 4 php model-view-controller zend-framework
我的Zend Framework项目分为几个模块.每个模块都有一些特定的控制器插件.
现在,问题是所有插件都被加载和注册(因此被调用) - 无论用户尝试访问哪个模块.
我可以测试我们在哪个模块中并直接在插件中停止执行,但我必须在每个插件中执行此操作...
是否有一种优雅的方式来只注册特定于模块的插件?或者我在这里试图解决错误的问题?
这是模块特定插件的示例
摘自http://weierophinney.net/matthew/archives/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts.html
class Foomodule_Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
if ('foomodule' != $request->getModuleName()) {
// If not in this module, return early
return;
}
// Change layout
Zend_Layout::getMvcInstance()->setLayout('foomodule');
}
}
Run Code Online (Sandbox Code Playgroud)
更新:万一你错过了,上面同一篇文章中列出了其他方式:
有没有更好的方法来做到这一点?
是的,可能有更好的方法来实现这一目标.真正的问题是模块目前在ZF中确实是二等公民.有一些巧妙的想法浮出水面: Kathryn的Active模块配置