如何在zend框架中从插件触发索引控制器

时间:2013-01-07 04:45:07

标签: php zend-framework

我尝试使用插件为不同的模块调度bootstraps。但是,由于某种原因,我不能为每个模块触发控制器,错误是“EXCEPTION_NO_CONTROLLER”。任何人都可以给出一些建议吗?

// Plugin Code:
class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract {
    public function __construct() {
    }

    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
        if ('admin' == $request->getModuleName()) {
            require_once APPLICATION_PATH .'/modules/admin/Bootstrap.php';
            $moduleBootstrap = new Admin_Bootstrap();
            $moduleBootstrap->bootstrap();
        } else if('site' == $request->getModuleName()) {

        }
    }
}

// Module Bootstrap:
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap{    
    public function Admin_Bootstrap() {
    }

    protected function _initAutoload() {
        define("localhost", "adrian");
    }
}

1 个答案:

答案 0 :(得分:2)

所有模块引导都在每个请求上运行。

如果在请求被路由到单个模块时您希望​​执行某些处理,则注册插件 - 在应用程序引导程序或模块引导程序中;如上所述,它们都将运行 - 如果请求不是针对他的模块,则会提前退出。

有关进一步讨论,请参阅MWOP的这篇文章:

http://www.mwop.net/blog/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts.html