2012-06-20 18 views
13

Ho diversi pacchetti e vorrei sapere se è possibile personalizzare le singole pagine di errore per ciascun pacchetto.Symfony2: personalizza le pagine di errore per diversi bundle

Ho letto il ricettario e gli esempi mostrano solo una pagina di personalizzazione generica per tutti i pacchetti.

C'è un modo per sovrascrivere il processo di eccezione per ogni pacchetto?

risposta

5

Lo stesso listener dovrebbe rilevare che - Non sono a conoscenza di alcun modo per specificare un listener per un singolo 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 
    } 
    } 
} 

e registrarlo

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

C'è un pacco che ho fatto per cattura diverse pagine errori dalla configurazione di percorsi regex, funziona dall'ascoltatore "kernel.exception_listener" e il "kernel.exception "evento come descritto nella documentazione (http://symfony.com/doc/current/cookbook/controller/error_pages.html#use-kernel-exception-event).

Con questo pacchetto, è possibile:

  • Cambiare il modello di eccezione ramoscello dalla regex del percorso che si desidera
  • modificare il modello eccezione ramoscello per certains codice di stato HTTP solo
  • Attiva/disattiva la modello personalizzato per la modalità di debug

link al fascio (licenza MIT): https://github.com/Kwrz/TwigException

Grazie per la tua idea, Peter, penso di aggiungere una funzione nella prossima versione del mio pacchetto per definire il modello dallo spazio dei nomi del bundle corrispondente.

Problemi correlati