Подтвердить что ты не робот

Symfony2: настройка страниц ошибок для разных пакетов

У меня есть несколько пакетов, и я хотел бы знать, возможно ли настроить для каждого пакета свои собственные страницы ошибок.

Я прочитал кулинарию, и примеры показывают только общую страницу настройки для всех пакетов.

Есть ли способ переопределить процесс исключения для каждого пакета?

4b9b3361

Ответ 1

Сам слушатель должен будет обнаружить это - я не знаю ни одного способа указать слушателя для одного пакета.

<?

namespace Your\MainBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;

class YourExceptionListener
{
  public function onKernelException(GetResponseForExceptionEvent $event)
  {
    $exception = $event->getException();
    $namespace = new \ReflectionObject( $event->getController() )->getNamespaceName();

    switch ( $namespace )
    {
      case 'Acme\\DemoBundle':
        // do whatever with $exception here
        break;
      case 'Some\\OtherBundle':
        // do whatever with $exception here
        break;
      case 'Your\\MainBundle':
        // do whatever with $exception here
        break;
      default;
        // default
    }
  }
}

И зарегистрируйте его

//services.yml
kernel.listener.yourlistener:
  class: Your\MainBundle\YourExceptionListener
  tags:
    - { name: kernel.event_listener, event: kernel.exception, method: onKernelException }

Ответ 2

Там пакет, который я сделал для улавливания разных страниц ошибок из конфигурации маршрутов маршрутов, работает от слушателя "kernel.exception_listener" и события "kernel.exception", как описано в документации (http://symfony.com/doc/current/cookbook/controller/error_pages.html#use-kernel-exception-event).

С помощью этого пакета вы можете:

  • Измените шаблон исключения twig из регулярного выражения нужного вам маршрута.
  • Изменить шаблон исключения ветки только для сертификата статуса сертификата http
  • Включение/отключение настраиваемого шаблона для режима отладки

Ссылка на пакет (лицензия MIT): https://github.com/Kwrz/TwigException

Спасибо за вашу идею Питер, я думаю, добавить функцию в следующей версии моего пакета, чтобы определить шаблон из соответствующего пространства имен пакетов.