为什么在indexAction之后没有调用Zend插件postDispatch方法

时间:2012-08-05 09:05:10

标签: zend-framework

当我转到控制器索引URL时,在输入该控制器的indexAction方法之前调用preDispatch,但之后不调用postDispatch。为什么不调用它,我应该强制它以某种方式调用postDispatch? 我有两个插件,其中没有调用postDispach方法。 如果我得到了URL,例如admin / listperms,则调用postDispatch并且一切正常。

AdminController.php

class AdminController extends Application_Controllers_Base {

    public function indexAction() {
        $this->view->headTitle = $this->alias('TITLE_ADMIN_PANEL');
    }

    public function listpermsAction() {
       $this->view->headTitle = $this->alias('TITLE_PERMISSION_LIST');
       $permService = new Application_Services_AdminPermission();
       $perms = $permService->getPermissionList();

       if(!$perms) {
            // TODO: 
       } else {
           $this->view->permList = $perms;
        }

    }
}

Base.php

class Application_Controllers_Base extends Zend_Controller_Action {
}

DbLogPlugin.php

class Application_Plugin_DbLogPlugin extends Zend_Controller_Plugin_Abstract {

    public function postDispatch(Zend_Controller_Request_Abstract $request) {
        $view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
        $view->developerLog = $this->getQuerysLogs();   
    }
}

bootstrap.php中

protected function _initAutoload(){
    $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Application_', //'
            'basePath'  => APPLICATION_PATH
    ));
    $autoloader->addResourceType('dao', 'dao', 'Dao');
    $autoloader->addResourceType('services', 'services', 'Services');
    $autoloader->addResourceType('plugins', 'plugins', 'Plugins');
    $autoloader->addResourceType('models', 'models', 'Models');    
    $autoloader->addResourceType('controllers', 'controllers', 'Controllers');

    require_once('controllers/FrontController.php');
        $front = Application_Controllers_FrontController::getInstance();      
        $front->setControllerDirectory(APPLICATION_PATH.'/controllers')
        ->setRouter(new Zend_Controller_Router_Rewrite())
        ->registerPlugin(new Application_Plugin_DbLogPlugin())
        ->registerPlugin(new Application_Plugin_AuthPlugin())
        ->registerPlugin(new Application_Plugin_ViewPlugin());
    return $autoloader;
} 

0 个答案:

没有答案