2013-08-19 22 views
6

Biraz kafam karıştı. Alan Storm'un Magento Block Lifecycle Methods hakkındaki mükemmel makalesini okudum ve anladığım kadarıyla bloğu başlatmak için protected _construct() yöntemini kullanmalıyım. Benim durumumda sadece doğru blok şablonunu ayarlamak istiyorum. Bu yüzden çekirdek Magento modüllerin bazı blokları baktığımızda, bunu yapmak için php __construct yöntemi kullanmak gibi görünüyor, ben Ancak Magento Blok yapı - _construct veya __construct kullanın?

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

kullanıyor olmalıdır varsayalım. Örneğin Mage_Poll_Block_Poll, Mage_ProductAlert_Block_Price, Mage_Rating_Block_Entity_Detailed, Mage_Review_Block_Form

iki yönde gerçekten işe rağmen, ben bunu yapmak için doğru yolu nedir bilmek istiyorum.

cevap

8

Bu sonuçta akademik, ama it® Yapmak Doğru Mage_Core_Block_Abstract çekirdek ekip tarafından istendiği gibi yani _construct Magento yapıcı geçersiz kılmak için ise: sağ tavsiye için

/** 
* 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 ama bu hiç t% 100 akademik - '__construct' yöntemini geçersiz kıldığınızda, '__construct' üst öğesini çağırmama veya '__construct' ebeveynini arama ve yapıcı argümanlarını kaldırma olasılığını sunarsınız. Bu, düzen xml güncellemelerinde kullanıldığında blokların nasıl davrandığında tutarsızlıklar yaratabilir. –

+0

Düşünceme değer verip, geliştiricilerin daima The Right Thing®'i desteklediğini varsayar. – benmarks