पहले preDispatch()
Zend_Controller_Plugin_Abstract
की घटनाओं के लिए कहा जाता है। यहां आपके पास अनुरोध और प्रतिक्रिया वस्तुएं हैं, इसलिए आप अनुरोध को फ़िल्टर कर अनुरोध कर सकते हैं या अनुरोध से जानकारी का उपयोग कर कुछ तैयारी कर सकते हैं।
Zend_Controller_Action
की init()
निर्माता के हिस्से के रूप में अगले कहा जाता है। यह ओवरराइड और निर्माता (Zend_Controller_Action::__contruct()
) के हस्ताक्षर को दोहराने के लिए बिना, आप अपने नियंत्रक को प्रारंभ करने में मदद करने नहीं है।
नियंत्रक के preDispatch()
विधि यहाँ कहा जाता है। यकीन नहीं करता है, तो आप कर सकते हैं कि init()
में फिर अपने कार्रवाई विधि कहा जाता है (viewAction()
उदाहरण के लिए) - आप वर्तमान कार्रवाई को छोड़ $request->setDispatched(false)
कॉल कर सकते हैं। यहां आप मॉडल से सामान लाने और दृश्य को पॉप्युलेट करने जैसे अपना सामान्य काम करते हैं।
तो भेद अब स्पष्ट होना चाहिए:
- आप कुछ सभी कार्यों से पहले क्रियान्वित किया जा करना चाहते हैं - यह एक प्लगइन में डाल दिया और हुक से एक का उपयोग (
preDispatch()
के अलावा वहाँ routeStartup
और others),
- यदि आप एक नियंत्रक में हर क्रिया से पहले चाहते हैं -
init
या preDispatch()
,
- अगर एक भी कार्रवाई के लिए केवल - कार्रवाई में ही।
क्या init()
और preDispatch()
समारोह कॉल के बीच होता है?
लगभग कुछ भी नहीं है - preDispatch()
निष्पादित किया जाता है, और यदि आप $request->setDispatched(false)
बुलाया नहीं किया है, कार्रवाई निष्पादित किया जाता है।
स्रोत
2010-02-02 08:54:56
क्या आप नियंत्रक वस्तुओं के बारे में बात कर रहे हैं? –
@Emil: मैंने सवाल संपादित किया है। यह अब स्पष्ट होना चाहिए। – understack