Symfony2 : customize error pages for different bundles Symfony2 : customize error pages for different bundles symfony symfony

Symfony2 : customize error pages for different bundles


The listener itself would have to detect that - I'm not aware of any way to specify a listener for a single bundle.

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

And register it

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


There's a bundle i've made for catch different errors pages from routes regex configuration, it works from the "kernel.exception_listener" listener and the "kernel.exception" event as described in documentation (http://symfony.com/doc/current/cookbook/controller/error_pages.html#use-kernel-exception-event).

With this bundle, you can:

  • Change the twig exception template from regex of the route you want
  • Change the twig exception template for certains http status code only
  • Enable / Disable the custom template for the debug mode

Link to the bundle (MIT licence): https://github.com/Kwrz/TwigException

Thanks for your idea Peter, I think add a feature in the next version of my bundle to define the template from the corresponding bundle namespace.