2012-06-20 2 views
13

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

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

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

ответ

5

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

<? 

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 } 
-1

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

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

  • Изменить шаблон веточки исключения из регулярных выражений маршрута вы хотите
  • Изменить шаблон исключений веточки применительно к некоторому HTTP кода статуса только
  • Включить/Отключить пользовательский шаблон для режима отладки

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

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

Смежные вопросы