В чем разница между <action method=”unsetChild”>и <remove name=""/>?
Обе функции используются для удаления блока из макета.
Может ли кто-нибудь объяснить на примере?
В чем разница между <action method=”unsetChild”>и <remove name=""/>?
Обе функции используются для удаления блока из макета.
Может ли кто-нибудь объяснить на примере?
Ответы:
<remove name="" />работает в области глобального блока Mage_Core_Model_Layout. Они собираются Mage_Core_Model_Layout::generateXml()и используются для предотвращения создания экземпляров блока с указанным именем . Кроме того, любые дочерние блоки, объявленные для <remove />блока ed , также не будут созданы .
<action method="" />aka Mage_Core_Block_Abstract::unsetChild()- это метод уровня блока, который удаляет указанный дочерний блок (по псевдониму , а не по имени ) из экземпляра родительского блока, для которого вызывается действие. Это чаще всего приводит к тому, что блок «исчезает» из визуализированного вывода, даже если экземпляр блока все еще создается. Используется в сочетании с методами ::append()или ::insert(), он используется для выполнения «перемещения».
aliasдля дочернего элемента устанавливается его name. 👍
<remove name="" />, После завершения всех макетов, Magento полностью удалит блок с указанным именем = "", независимо от того, к какому дескриптору макета он был добавлен. Используя этот метод, невозможно удалить блок из одного местоположения, а затем добавить его в другое
<action method="unsetChild">работает только в контексте, где он используется. unsetChild создан для перемещения существующих блоков из одного места в другое. Этот метод необходимо использовать, если вы хотите удалить определенный блок из определенного дескриптора макета, а затем вставить его в другое положение или дескриптор макета.