0

所以我的Zend Framework一直拒绝处理异常,尽管我在Google上做了所有人都提出的建议......所以我在这里问我可能会做错什么......针对所有可能性的“未捕获的异常”

我有我的ErrorController.php文件中的应用程序/模块/默认/控制器设置,与此内容:

<?php 
class ErrorController extends Zend_Controller_Action 
{ 
    public function errorAction() 
    { 
     $error = $this->_getParam('error_handler'); 
     switch ($error->type){ 
      case "EXCEPTION_NO_CONTROLLER": 
      case "EXCEPTION_NO_ACTION": 
       $this->getResponse()->setHttpResponseCode(404); 
       $this->view->title = "Page Not Found"; 
       $this->view->message = "404 - Oops ! You took a wrong turn..."; 
       break; 
      default: 
       $this->getResponse()->setHttpResponseCode(500); 
       $this->view->title = "Unexpected Error"; 
       $this->view->headmessage = "500 - Oops ! Something wrong happened... "; 
       $this->view->message  = $error->exception->getMessage(); 
       break; 
     } 
     $this->view->exception = $error->exception; 
     // pass the request to the view 
     $this->view->request = $error->request; 
    } 
} 

在我的index.php,我只是包括应用程序/ bootstrap.php中包含,除其他事项外:

$front = Zend_Controller_Front::getInstance(); 
$front->throwExceptions(false); 
$front->setControllerDirectory('./application/controllers'); 
$front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler()); 

然而,在我的代码,任何时候我打电话,例如:

throw new Zend_Controller_Exception('This page does not exist', 404); 

我得到通常恼人的“致命错误:未捕获的异常‘Zend_Controller_Exception’有消息‘此页面不存在’”等等等等..

有什么我做错了吗?我想知道'./application/controllers'是否正确,因为据我所知,我的Zend框架文件夹中没有单个“应用程序”文件夹......但我在网上找不到任何关于它的任何信息!并创建一个把我的ErrorController.php在它导致我到目前为止...

+0

您似乎正在为您的项目使用模块化结构。你有没有在application.ini中的模块目录适当的条目? – mingos 2013-03-06 22:06:24

+0

其实我发现我的问题的来源是我注册了另一个身份验证插件与errorHandler冲突...仍然没有设法修复它。 – SylvainB 2013-03-07 17:17:55

回答

0

好吧,事实证明,我的身份验证插件与重定向冲突(我已经了解到,这是一个很常见的问题),所以我设法通过摆弄我的身份验证插件的规则来修复它。

值得注意的是,404身份验证错误重定向必须通过使用“isDispatchable”方法检查路由并“手动”更改指向特定404页面的路由来处理。

至少这对我来说是如此,但重要的是要知道,没有单一的解决方案来认证插件冲突,因为每个认证插件是不同的,这取决于它的目的。