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

Php 如何在zend框架中从插件触发索引控制器,php,zend-framework,Php,Zend Framework,我尝试使用插件为不同的模块分派引导。但是,由于某些原因,我无法为每个模块触发控制器,错误为“EXCEPTION\u NO\u controller”。有人能给点建议吗 // Plugin Code: class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract { public function __construct() { } public function dispatchLoopStartup(

我尝试使用插件为不同的模块分派引导。但是,由于某些原因,我无法为每个模块触发控制器,错误为“EXCEPTION\u NO\u 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");
    }
}

我不确定如果我不理解你的问题你可以试试

public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
   $request = Zend_Controller_Front::getInstance()->getRequest();
    if ('admin' == $request->getModuleName()) {

        require_once APPLICATION_PATH.'/modules/admin/Bootstrap.php';

        $moduleBootstrap = new Admin_Bootstrap();

        $moduleBootstrap->bootstrap();

    }
    else if('site' == $request->getModuleName()){
               $request->setModuleName('othermodule');
                $request->setControllerName('othercontroller');
                $request->setActionName('otherindex');
    }
}

我不确定如果我不理解你的问题你可以试试

public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
   $request = Zend_Controller_Front::getInstance()->getRequest();
    if ('admin' == $request->getModuleName()) {

        require_once APPLICATION_PATH.'/modules/admin/Bootstrap.php';

        $moduleBootstrap = new Admin_Bootstrap();

        $moduleBootstrap->bootstrap();

    }
    else if('site' == $request->getModuleName()){
               $request->setModuleName('othermodule');
                $request->setControllerName('othercontroller');
                $request->setActionName('otherindex');
    }
}

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

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

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


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

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

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


我认为ZF1的工作方式与您认为的不同。我认为ZF1的工作方式与您认为的不同。