Мне нужно иметь возможность регистрировать/получать электронное письмо при возникновении ошибки 404. В документах я вижу, как настроить новый шаблон для этих ошибок, но как мне отловить их в первую очередь в моем контроллере, чтобы я мог реализовать логику регистрации/отправки по электронной почте?
Symfony2 регистрирует 404 ошибки
Ответы (1)
Может быть, добавление прослушивателя событий, прослушивающего событие kernel.exception, поможет? Проверьте http://symfony.com/doc/current/book/internals.html#kernel-exception-event вместе с http://symfony.com/doc/current/reference/dic_tags.html#dic-tags-kernel-event-listener
Небольшой пример:
1) Создайте собственный прослушиватель
//bundles/Acme/AcmeBundle/Listener/CustomListener.php
namespace Acme\AcmeBundle\Listener;
use Symfony\Component\EventDispatcher\Event;
public class CustomListener {
public function onKernelException(Event $event) {
//Get hold of the exception
$exception = $event->getException();
//Do the logging
// ...
}
}
2) Добавьте слушателя в свой конфиг
//config.yml
services:
kernel.listener.your_listener_name:
class: Acme\AcmeBundle\Listener\CustomListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
Чтобы заполучить службы ведения журналов или рассылки (Swiftmailer), вы можете внедрить их в прослушиватель (http://symfony.com/doc/current/book/service_container.html#reference-injecting-services)
person
Manne W
schedule
16.08.2011
Это маршрут, по которому я в итоге пошел. Теперь мне просто нужно разобраться с сервисной инъекцией. Я использую GetResponseForExceptionEvent в качестве конкретного типа события — правильно ли его использовать?
- person Jeremy Hicks; 17.08.2011
GetResponseForExceptionEvent
- это тот, который вы должны использовать для исключения. И могу ли я предложить проверить, является ли ошибка 404
? В противном случае вам будет отправлено все исключения (если вы хотите, вы можете использовать для этого конфигурацию Monolog).
- person Ramon Kleiss; 16.04.2013