I was noticing that if i throw an error into a front controller plugin the actual error is displayed instead of the error page from /Default/Error/Error action...
I got this setup for exceptions:
resources.frontcontroller.throwexceptions = false
I was throwing the error on:
public function preDispatch(Zend_Controller_Request_Abstract $request) {
....
throw new App_Exception_Acl('no rights', 404);
.....
}
The error controller:
class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
$errors = $this->_getParam('error_handler');
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Page not found';
break;
default:
// application error
$this->getResponse()->setHttpResponseCode(500);
$this->view->message = 'Application error';
break;
}
$this->view->exception = $errors->exception;
$this->view->request = $errors->request;
}
}
The error.phtml:
<h1>An error occurred</h1>
<p>An error occurred; please try again later.</p>
<?php
if( isset($this->exception) && (APPLICATION_ENV == 'development') )
echo $this->exception->getMessage() . "\n" . $this->exception->getTraceAsString();
Any idea why is not actually rendered the error.phtml but instead the error directly ?
-- Best regards, Cristian Bichis www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com
没有评论:
发表评论