¿Cuál es la diferencia entre <action method=”unsetChild”>
y <remove name=""/>
?
Ambas funciones se utilizan para eliminar un bloque del diseño.
¿Alguien podría explicar con un ejemplo?
<remove name="" />
opera en el ámbito de bloque global de Mage_Core_Model_Layout
. Estos se recogen en Mage_Core_Model_Layout::generateXml()
y usados para prevenir el bloque con el nombre especificado de siquiera ser instanciado . Además, cualquier bloques del niño declaradas para un <remove />
bloque ed serán tampoco pueden crear instancias .
<action method="" />
aka Mage_Core_Block_Abstract::unsetChild()
es un método de nivel de bloque que elimina la lista del bloque secundario indicado (por alias , no por nombre ) de la instancia del bloque primario en el que se llama la acción. Esto a menudo resulta en que el bloque "desaparezca" de la salida renderizada, aunque la instancia del bloque todavía se crea. Utilizado en combinación con los métodos ::append()
o ::insert()
, se utiliza para realizar un "movimiento".
alias
para un niño se establece en suname
. 👍<remove name="" />
, Cuando termine con todos los diseños, Magento eliminará por completo el bloque con el nombre indicado = "", independientemente del controlador de diseño al que se haya agregado. Con este método, es imposible eliminar un bloque de una ubicación y luego agregarlo a otra<action method="unsetChild">
opera solo en el contexto donde se está utilizando. unsetChild se crea para mover bloques existentes de un lugar a otro. Debe utilizar este método si desea eliminar un bloque específico de un controlador de diseño específico y luego insertarlo en otra posición o controlador de diseño.fuente