所以我的Zend Framework一直拒绝处理异常,尽管我做了每个人在Google上做的所有事情......所以我在这里问我可能做错了什么......
我在app / modules / default / controllers中设置了我的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中,我只包含app / 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 :(得分:0)
好吧,事实证明,我的身份验证插件与重定向冲突(我现在已经知道这是一个非常常见的问题),所以我设法通过摆弄我的身份验证插件的规则来解决它。
值得注意的是,必须通过使用“isDispatchable”方法检查路由并“手动”将路由更改为特定的404页面,在Authentication Plugin中处理404错误重定向。
至少那对我来说是这样的,但重要的是要知道没有单一的Authentication Plugin冲突解决方案,因为每个身份验证插件都有所不同,具体取决于它的用途。