Qual è la differenza tra <action method=”unsetChild”>
e <remove name=""/>
?
Entrambe le funzioni vengono utilizzate per rimuovere un blocco dal layout.
Qualcuno potrebbe spiegare con un esempio?
Qual è la differenza tra <action method=”unsetChild”>
e <remove name=""/>
?
Entrambe le funzioni vengono utilizzate per rimuovere un blocco dal layout.
Qualcuno potrebbe spiegare con un esempio?
Risposte:
<remove name="" />
opera nell'ambito del blocco globale di Mage_Core_Model_Layout
. Questi vengono raccolti Mage_Core_Model_Layout::generateXml()
e utilizzati per impedire che il blocco con il nome specificato venga persino istanziato . Inoltre, eventuali blocchi bambino dichiarati per un <remove />
blocco ed avranno , inoltre, non essere istanziati .
<action method="" />
aka Mage_Core_Block_Abstract::unsetChild()
è un metodo a livello di blocco che elimina il blocco figlio indicato (per alias , non per nome ) dall'istanza del blocco padre su cui viene chiamata l'azione. Ciò provoca spesso la scomparsa del blocco dall'output di rendering, anche se l'istanza del blocco è ancora creata. Utilizzato in combinazione con i metodi ::append()
o ::insert()
, viene utilizzato per eseguire una "mossa".
alias
for for child è impostato su its name
. 👍
<remove name="" />
, Al termine di tutti i layout, Magento eliminerà completamente il blocco con il nome indicato = "", indipendentemente dal layout a cui è stato aggiunto. Utilizzando questo metodo è impossibile rimuovere un blocco da una posizione e quindi aggiungerlo a un'altra
<action method="unsetChild">
opera solo nel contesto in cui viene utilizzato. unsetChild è creato per spostare blocchi esistenti da un posto all'altro. È necessario utilizzare questo metodo se si desidera rimuovere un blocco specifico da un handle di layout specifico e quindi inserirlo in un'altra posizione o handle di layout.