2013-08-19 11 views
6

Sono un po 'confuso. Ho letto l'eccellente articolo di Alan Storm su Magento Block Lifecycle Methods e, per quanto ne so, si dovrebbe usare il metodo protected _construct() per inizializzare il blocco. Nel mio caso voglio solo impostare il modello di blocco giusto. Quindi suppongo dovrei usareCostrutto Magento Block - usa _construct o __construct?

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

Tuttavia, quando guardo i blocchi di alcuni dei moduli di base Magento, sembrano utilizzare il metodo php __construct per farlo. Per esempio Mage_Poll_Block_Poll, Mage_ProductAlert_Block_Price, Mage_Rating_Block_Entity_Detailed, Mage_Review_Block_Form

Anche se in entrambi i modi in realtà il lavoro, mi piacerebbe sapere qual è il modo giusto per farlo.

risposta

8

E 'in ultima analisi accademica, ma il modo giusto di fare It® è quello di ignorare il costruttore di Magento cioè _construct come richiesto dal core team in Mage_Core_Block_Abstract:

/** 
* 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 per i consigli giusti, ma questo isn' t 100% accademico - quando si ridefinisce il metodo '__construct' si introduce la possibilità di non chiamare il' __construct genitore ', o chiamare il '__construct parent' e rimuovere gli argomenti del costruttore. Questo può creare incoerenze nel modo in cui i blocchi si comportano quando vengono utilizzati negli aggiornamenti xml del layout. –

+0

Vale la pena sottolineare, poiché la mia risposta presuppone che gli sviluppatori facciano sempre The Right Thing®. – benmarks

Problemi correlati