2012-08-13 8 views
6

में init विधि Zendframework 1 में हम init() नियंत्रक में सामग्री प्रारंभ करने के लिए विधि का उपयोग करते हैं। मैंने देखा कि यह ज़ेनफ्रेमवर्क 2 से बाहर निकाला गया है क्यों? और zf 2 में एक ही चीज़ को हासिल करने का सबसे अच्छा तरीका क्या है। मैं अपनी पिछली परियोजना को zf1 में विकसित कर रहा हूं और मैं देख सकता हूं कि zf1 की तुलना में zf2 में चीजें बहुत बदल गई हैं।zit2 नियंत्रक

क्या ज़ेड 2 में कोई और बदलाव है, वैसे ही हम preDispatch() और postDispatch() जैसे अन्य तरीकों का उपयोग zf1 में करते हैं?

कोई भी इस माध्यम से चला गया है?

उत्तर

12

zf2 नियंत्रकों में नियंत्रक लोडर द्वारा तत्काल किया जाता है, जो ServiceManager का उप-वर्ग है। यदि आपको नियंत्रक को निष्क्रिय करने की आवश्यकता है, तो या तो फैक्टरी, या __construct का उपयोग करें। सिंपल इनटाइलाइजेशन के लिए __construct का उपयोग करें, और एक फैक्टरी का उपयोग करें यदि नियंत्रक इंजेक्शन की आवश्यकता वाले अन्य ऑब्जेक्ट्स का उपभोग करता है।

preDispatch और postDispatch भी नई घटना प्रणाली के पक्ष में चला गया है। Zf2 में एक ही परिणाम प्राप्त करने के लिए, disptach और render ईवेंट के लिए ईवेंट हैंडलर पंजीकृत करें। MVC envents की पूरी सूची के लिए यह भी देखें http://akrabat.com/zend-framework-2/a-list-of-zf2-events/

, यहाँ एक नियंत्रक कारखाने ZF2 how to get entity Manager from outside of controller

+4

अक्रबैट्स के अलावा घटनाओं की पूरी सूची मैथ्यू डब्ल्यू ओ'फिनी का एक ब्लॉग http://mwop.net/blog/2012-07-30-the-new-init.html – Sam

+0

धन्यवाद सैम, यह लिंक है वास्तव में सहायक है। – Developer

8

स्थापित करने का एक उदाहरण मैं तुम्हें एक नियंत्रक में इस ड्रॉप कर सकते हैं लगता है के लिए एक बार देख ले और यह काम करेंगे।

public function onDispatch(MvcEvent $e) 
+0

यह वह जवाब है जिसे मुझे पसंद आया। – Ismael

+0

यीशु धन्यवाद, ZF2 में सबकुछ इतना क्यों है – Jonathan

0

के बाद से ओपी उल्लेख postDispatch, यह देखते हुए कि __destruct अब एक समान तरीके से काम करता है लायक है। हालांकि, एक बड़ा अंतर यह है कि निष्पादन को रोका नहीं जा सकता है (उदाहरण के लिए exit;) ऑब्जेक्ट के आंसू को टियर करना।