2013-06-03 6 views
13

मैंने देखा कि ज़ेन्ड प्रदान करता है कि कंकाल अनुप्रयोग error 500 संभाल नहीं करता है। मुझे पता है कि जेडएफ 1 में ErrorController था जिसने इसका ख्याल रखा था। मैंने ऑनलाइन कुछ शोध किया है, लेकिन इसके लिए एक स्पष्ट कट समाधान नहीं मिला।त्रुटि प्रबंधन के लिए ज़ेंड फ्रेमवर्क 2 अनुशंसित तरीका

तो ZF2 में त्रुटि प्रबंधन के लिए सबसे अच्छा तरीका क्या है। क्या यह प्रति मॉड्यूल आधार या कुछ वैश्विक अपवाद/त्रुटि हैंडलर पर होगा?

मुझे पता है कि एक और समाधान ini_set('display_errors', true); को मेरे index.php में जोड़ना होगा, लेकिन मुझे वास्तव में यह समाधान पसंद नहीं है। ऐसा लगता है कि ढांचे को त्रुटियों को संभालने के लिए कुछ रास्ता प्रदान करना चाहिए। अपने Module.php आप एक समारोह संलग्न कर सकते हैं पर अमल करने में onBootstrap विधि में

:

+1

कंकाल आवेदन में त्रुटियों को काफी अच्छी तरह से संभाला जाता है। आप क्या करने की कोशिश कर रहे हैं? सवाल अस्पष्ट है। ([त्रुटि 500 ​​टेम्पलेट घोषणा] (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#L84), [स्विच चालू/बंद स्विच] (https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#L81)) – David

उत्तर

28

आप निम्न उदाहरण है जिसमें आप अपवाद विश्व स्तर पर पकड़ने रहे हैं क्योंकि यह पकड़ने के बाद वैसे भी आप चाहते हैं में अपवाद संभाल कर सकते हैं ... कोई घटना होती है जब, निम्नलिखित एक समारोह देते निष्पादित करने के लिए जब एक त्रुटि (अपवाद) उठाया है:

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

और फिर समारोह आप चाहते हैं किसी भी तरह से त्रुटि को संभालने के लिए परिभाषित करते हैं, निम्नलिखित एक उदाहरण है:

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

मेरे लिए काम नहीं करता है! – Abadis

+1

क्या आप हमें दिखा सकते हैं कि हम हैंडल फ़ंक्शन के भीतर से किसी अन्य पृष्ठ पर कैसे रीडायरेक्ट करते हैं? – srayner

संबंधित मुद्दे