diff --git a/lib/Cake/Error/ExceptionRenderer.php b/lib/Cake/Error/ExceptionRenderer.php index a245b64ee25..40f551417a8 100644 --- a/lib/Cake/Error/ExceptionRenderer.php +++ b/lib/Cake/Error/ExceptionRenderer.php @@ -20,9 +20,12 @@ */ App::uses('Sanitize', 'Utility'); +App::uses('Dispatcher', 'Routing'); App::uses('Router', 'Routing'); -App::uses('CakeResponse', 'Network'); App::uses('Controller', 'Controller'); +App::uses('CakeRequest', 'Network'); +App::uses('CakeResponse', 'Network'); +App::uses('CakeEvent', 'Event'); /** * Exception Renderer. @@ -287,7 +290,7 @@ public function pdoError(PDOException $error) { protected function _outputMessage($template) { try { $this->controller->render($template); - $this->controller->afterFilter(); + $this->_shutdown(); $this->controller->response->send(); } catch (MissingViewException $e) { $attributes = $e->getAttributes(); @@ -327,4 +330,15 @@ protected function _outputMessageSafe($template) { $this->controller->response->send(); } + protected function _shutdown() { + $this->controller->afterFilter(); + + $Dispatcher = new Dispatcher(); + $afterDispatchEvent = new CakeEvent('Dispatcher.afterDispatch', $Dispatcher, array( + 'request' => $this->controller->request, + 'response' => $this->controller->response + )); + $Dispatcher->getEventManager()->dispatch($afterDispatchEvent); + } + }