Zend_Controller_Plugin_ErrorHandler总是转发到默认模块中的ErrorController :: errorAction(),但我希望它能够模块化.例如,当抛出异常时,必须调用模块的ErrorController,如Admin_ErrorController:errorAction.
我怎样才能做到这一点?谢谢.
您可以创建将检查您的请求并基于当前模块集ErrorController的插件...
getPlugin('Zend_Controller_Plugin_ErrorHandler') instanceof Zend_Controller_Plugin_ErrorHandler)) { return; } $error = $front->getPlugin('Zend_Controller_Plugin_ErrorHandler'); $testRequest = new Zend_Controller_Request_Http(); $testRequest->setModuleName($request->getModuleName()) ->setControllerName($error->getErrorHandlerController()) ->setActionName($error->getErrorHandlerAction()); if ($front->getDispatcher()->isDispatchable($testRequest)) { $error->setErrorHandlerModule($request->getModuleName()); } } }
然后用
$front = Zend_Controller_Front::getInstance(); $front -> registerPlugin(new My_Controller_Plugin_ErrorControllerSwitcher())
使用FrontController注册插件.感谢JohnP指出这一点.