0

プラグインを使用して、さまざまなモジュールのブートストラップをディスパッチしようとしています。しかし、なぜかモジュールごとにコントローラーをトリガーすることができず、エラーは「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");
    }
}
4

2 に答える 2

2

すべてのモジュールのブートストラップは、すべてのリクエストで実行されます。

リクエストが単一のモジュールにルーティングされたときに実行したい処理がある場合は、アプリケーションのブートストラップまたはモジュールのブートストラップでプラグインを登録します。上記のように、それらはすべて実行されます-リクエストが彼のモジュールを対象としていない場合、早期に終了します。

詳細については、MWOP によるこの投稿を参照してください。

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

于 2013-01-07T11:54:59.763 に答える
1

よくわかりません..あなたの質問を理解できない場合..試すことができます

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');
    }
}
于 2013-01-07T07:30:22.233 に答える