2013-06-03 21 views
13

Zend'in sağladığı Iskelet Uygulamasının error 500'u işlemediğini fark ettim. ZF1'de bununla ilgilenen bir ErrorController olduğunu biliyorum. İnternette biraz araştırma yaptım, ancak bunun için net bir çözüm bulamadı.Zend framework 2 Hata işleme için önerilen yol

ZF2'de hata işlemenin en iyi yolu nedir? Modül bazında mı yoksa bazı global istisna/hata işleyici mi?

ini_set('display_errors', true);'u index.php'a eklemek için başka bir çözüm olacağını biliyorum, ancak bu çözümü gerçekten sevmiyorum. Çerçevenin hataları ele almak için bir yol sağlaması gerektiği görülmektedir.

+1

Hatalar iskelet uygulamasında oldukça iyi işleniyor. Ne yapmaya çalışıyorsun? Soru belli değil. ([error 500 template declaration] (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#L84), [hata açma/kapama düğmesi] (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#L81)) – David

cevap

28

Sen ... global istisna yakalamak yazıldığı şu örneği olarak yakalamak sonra yine istediğiniz istisnalar işleyebilir:

onBootstrap yöntemde senin Module.php bir işlevi ekleyebilirsiniz yürütmek için de bir olay meydana geldiğinde, aşağıdaki hata (istisna) kalkık çalıştırılacak bir işlev eklemeyi:

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')); 
} 

ve ardından istediğiniz herhangi bir şekilde hatayı işlemek için işlevi tanımlayın aşağıda bir örnek:

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

Benim için çalışmıyor! – Abadis

+1

Bize handleError işlevinin içinden başka bir sayfaya nasıl yönlendirdiğimizi gösterir misiniz? – srayner