В чем разница между <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 создан для перемещения существующих блоков из одного места в другое. Этот метод необходимо использовать, если вы хотите удалить определенный блок из определенного дескриптора макета, а затем вставить его в другое положение или дескриптор макета.источник