2013-08-19 8 views
6

मैं थोड़ा उलझन में हूँ। मैंने Magento Block Lifecycle Methods के बारे में एलन स्टॉर्म के उत्कृष्ट लेख को पढ़ा और जहां तक ​​मुझे लगता है कि ब्लॉक को आरंभ करने के लिए protected _construct() विधि का उपयोग करना चाहिए। मेरे मामले में मैं सिर्फ सही ब्लॉक टेम्पलेट सेट करना चाहता हूं। इसलिए मैं मैंMagento ब्लॉक निर्माण - _construct या __construct का उपयोग करें?

protected function _construct() 
{ 
    parent::_construct(); 
    $this->setTemplate('stenik/qaforum/forum.phtml'); 
} 

का उपयोग करना चाहिए हालांकि मान, जब मैं कोर Magento मॉड्यूल में से कुछ के ब्लॉक को देखो, वे इसे करने के लिए php __construct विधि का उपयोग करने लगते हैं। उदाहरण Mage_Poll_Block_Poll, Mage_ProductAlert_Block_Price, Mage_Rating_Block_Entity_Detailed, Mage_Review_Block_Form

हालांकि दोनों तरीकों से वास्तव में काम के लिए, मैं पता है कि यह करने के लिए सही तरीका है चाहते हैं।

उत्तर

8

यह अंत में शैक्षिक है, लेकिन सही रास्ता It® करने के लिए के रूप में Mage_Core_Block_Abstract में कोर टीम द्वारा अनुरोध यानी Magento निर्माता ओवरराइड करने के लिए _construct है:

/** 
* Internal constructor, that is called from real constructor 
* 
* Please override this one instead of overriding real __construct constructor 
* 
*/ 
protected function _construct() 
{ 
    /** 
    * Please override this one instead of overriding real __construct constructor 
    */ 
} 
+5

सही सलाह के लिए +1, लेकिन यह 'isn टी 100% अकादमिक - जब आप '__construct' विधि को ओवरराइड करते हैं तो आप माता-पिता '__construct' को कॉल करने की संभावना नहीं देते हैं, या माता-पिता' __construct' को कॉल करते हैं और कन्स्ट्रक्टर तर्क को हटाते हैं। यह लेआउट xml अद्यतनों में उपयोग किए जाने पर ब्लॉक कैसे व्यवहार करता है में असंगतता पैदा कर सकता है। –

+0

वर्थ पॉइंटिंग आउट, जैसा कि मेरा जवाब मानता है कि डेवलपर हमेशा सही चीज करते हैं®। – benmarks

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