Diferencia entre <remove name = ”" /> y <action method = ”unsetChild”> en el diseño


21

¿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?

Respuestas:


21

<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".


Solo para agregar a esto, si el bloque no tiene un alias, entonces coincidirá con el nombre.
Ben Crook

2
Correcto, cuando no se proporciona ningún alias, el aliaspara un niño se establece en su name. 👍
puntos de referencia

2

<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.


No exactamente; Vea mi respuesta para las correcciones.
puntos de referencia del
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.