2012-06-20 15 views
13

Tengo varios paquetes y me gustaría saber si es posible personalizar para cada paquete sus propias páginas de error.Symfony2: personalizar páginas de error para diferentes paquetes

Leo el libro de cocina y los ejemplos muestran solo una página de personalización genérica para todos los paquetes.

¿Hay alguna manera de anular el proceso de excepción para cada paquete?

Respuesta

5

El oyente debería detectar eso: no conozco ninguna forma de especificar un oyente para un solo paquete.

<? 

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

y registrarlo

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

Hay un paquete que he hecho para capturar diferentes páginas de errores de configuración de rutas regulares, funciona por parte del oyente "kernel.exception_listener" y el "kernel.exception "evento como se describe en la documentación (http://symfony.com/doc/current/cookbook/controller/error_pages.html#use-kernel-exception-event).

Con este paquete, usted puede:

  • cambiar la plantilla a excepción ramita de expresiones regulares de la ruta que desea
  • cambiar la plantilla a excepción ramita de certains código de estado HTTP solamente
  • activar/desactivar la plantilla personalizada para el modo de depuración

Enlace al haz (licencia MIT): https://github.com/Kwrz/TwigException

Gracias por su idea Peter, creo que agregar una característica en la próxima versión de mi paquete para definir la plantilla del espacio de nombre del paquete correspondiente.

Cuestiones relacionadas