2013-06-03 9 views
13

Ho notato che l'applicazione Skeleton fornita da Zend non gestisce error 500. So che in ZF1 c'era un ErrorController che si occupava di quello. Ho fatto qualche ricerca online, ma non ho trovato una soluzione chiara per questo.Zend framework 2 modo consigliato per la gestione degli errori

Quindi qual è il modo migliore per gestire gli errori in ZF2. Sarebbe su base modulo o qualche gestore globale di eccezioni/errori?

So che un'altra soluzione potrebbe essere quella di aggiungere ini_set('display_errors', true); al mio index.php, ma questa soluzione non mi piace molto. Sembra che il framework debba fornire un modo per gestire gli errori.

+1

Gli errori vengono gestiti abbastanza bene nell'applicazione scheletro. Che cosa stai cercando di fare? La domanda non è chiara. ([dichiarazione modello 500 errore] (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#L84), [switch on/off degli errori] (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#L81)) – David

risposta

28

È possibile gestire le eccezioni in ogni caso si desidera dopo la cattura come il seguente esempio in cui si stanno recuperando l'eccezione a livello mondiale ...:

Nel metodo onBootstrap nel vostro Module.php è possibile allegare una funzione da eseguire quando si verifica un evento, il seguente allegare una funzione da eseguire quando un errore (eccezione) è sollevata:

public function onBootstrap(MvcEvent $e) 
{ 
    $application = $e->getApplication(); 
    $em = $application->getEventManager(); 
    //handle the dispatch error (exception) 
    $em->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'handleError')); 
    //handle the view render error (exception) 
    $em->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER_ERROR, array($this, 'handleError')); 
} 

e indicare la funzione per gestire l'errore in qualsiasi modo si desidera, il seguente è un esempio:

public function handleError(MvcEvent $e) 
{ 
    //get the exception 
    $exception = $e->getParam('exception'); 
    //...handle the exception... maybe log it and redirect to another page, 
    //or send an email that an exception occurred... 
} 
+0

Non funziona per me! – Abadis

+1

Puoi mostrarci come reindirizzare a un'altra pagina dalla funzione handleError? – srayner