Я заметил, что приложение Skeleton, предоставляемое Zend, не обрабатывает error 500
. Я знаю, что в ZF1 был ErrorController
который позаботился об этом. Я провел некоторое исследование в Интернете, но не нашел для этого четкого решения.
Итак, что лучше всего подходит для обработки ошибок в ZF2. Будет ли это на основе модуля или каким-либо глобальным обработчиком исключений / ошибок?
Я знаю, что другим решением было бы добавить ini_set('display_errors', true);
к моему index.php
, но мне не очень нравится это решение. Кажется, что структура должна обеспечить некоторый способ обработки ошибок.
Вы можете обрабатывать исключения в любом случае, если хотите, после того, как поймаете его как следующий пример, в котором вы вылавливаете исключение глобально …:
В методе onBootstrap
в вашем Module.php
вы можете присоединить функцию, выполняемую при возникновении события, следующее приложить функцию, которая будет выполняться при возникновении ошибки (исключения):
public function onBootstrap(MvcEvent $e) { $application = $e->getApplication(); $em = $application->getEventManager(); //handle the dispatch error (exception) $em->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'handleError')); //handle the view render error (exception) $em->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER_ERROR, array($this, 'handleError')); }
а затем определите функцию для обработки ошибки любым способом, например:
public function handleError(MvcEvent $e) { //get the exception $exception = $e->getParam('exception'); //...handle the exception... maybe log it and redirect to another page, //or send an email that an exception occurred... }