2013-01-07 64 views
0

我嘗試使用插件爲不同模塊分派引導程序。但是,由於某些原因,我無法爲每個模塊觸發控制器,並且錯誤爲「EXCEPTION_NO_CONTROLLER」。任何人都可以提出一些建議嗎?如何在Zend框架中從插件觸發索引控制器

// 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

我不認爲ZF1運作的,你認爲它的方式。 – RockyFord

回答

1

我不是sure..if我unserstand您question..you可以嘗試

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'); 
    } 
} 
2

所有模塊白手起家是在每一個請求運行。

如果在將請求路由到單個模塊時需要執行某些處理,請在應用程序引導程序或模塊引導程序中註冊插件;如上所述,他們將全部運行 - 如果請求不針對他的模塊,則會提前退出。

看到這個職位由MWOP供進一步討論:

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