1

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

管理员控制器.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();   
    }
}

引导程序.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;
} 
4

0 回答 0