Вам нужно будет выполнить некоторую пользовательскую обработку ошибок. Мы сами реализовали переход к пользовательскому действию Symfony. Однако будьте осторожны, само это действие может также вызывать исключение, вы должны принять это во внимание.
Следующее может быть хорошим началом. Сначала добавьте слушателя для события, хорошее место было бы ProjectConfiguration.class.php:
$this->dispatcher->connect('application.throw_exception', array('MyClass', 'handleException'));
Использование обработчика событий может быть достаточно для того, что вы хотите сделать с исключением, например, если вы просто хотите отправить трассировку стека администратору. Мы хотели перенаправить пользовательское действие для отображения и обработки формы обратной связи. Наш обработчик событий выглядел примерно так:
class MyClass {
public static function handleException(sfEvent $event) {
$moduleName = sfConfig::get('sf_error_500_module', 'error');
$actionName = sfConfig::get('sf_error_500_action', 'error500');
sfContext::getInstance()->getRequest()->addRequestParameters(array('exception' => $event->getSubject()));
$event->setReturnValue(true);
sfContext::getInstance()->getController()->forward($moduleName, $actionName);
}
}
Теперь вы можете настроить модуль и действие для пересылки на исключение в settings.yml
all:
.actions:
error_500_module: error
error_500_action: error500
В самом действии вы можете теперь делать все, что хотите, за исключением, например. отобразить форму обратной связи, чтобы связаться с администратором. Вы можете получить само исключение, используя $ request-> getParameter ('exception')