Різниця між <Remove name = "" /> та <method action = "unsetChild"> у макеті


21

У чому різниця між <action method=”unsetChild”>і <remove name=""/>?

Обидві функції використовуються для видалення блоку з макета.

Може хтось пояснить прикладом?

Відповіді:


21

<remove name="" />працює в глобальному блоковому масштабі Mage_Core_Model_Layout. Вони збираються Mage_Core_Model_Layout::generateXml()та використовуються для запобігання навіть екземпляру блоку із вказаним іменем . Крім того, будь-які дочірні блоки, оголошені для <remove />блоку ed , також не будуть екземплярами .

<action method="" />aka Mage_Core_Block_Abstract::unsetChild()- це метод рівня блоку, який скасовує вказаний дочірній блок (за псевдонімом , а не за назвою ) від екземпляра батьківського блоку, на який викликається дія. Найчастіше це призводить до того, що блок "зникає" з виведеного виводу, навіть якщо екземпляр блоку все ще створений. Використовується в поєднанні з методами ::append()або ::insert()методами, використовується для виконання "ходу".


Просто додати до цього, якщо у блоку немає псевдоніма, то він буде відповідати імені.
Бен Крук

2
Правильно, коли псевдонім не надається, aliasдля дитини встановлюється його name. 👍
орієнтири

2

<remove name="" />, Закінчивши з усіма макетами, Magento повністю видалить блок із вказаним ім'ям = "", незалежно від того, до якої макети макета він був доданий. За допомогою цього методу неможливо видалити блок з одного місця, а потім додати його до іншого

<action method="unsetChild">діє лише в контексті, де воно використовується. unsetChild створений для переміщення існуючих блоків з одного місця в інше. Цей метод потрібно використовувати, якщо ви хочете видалити певний блок із певної ручки макета, а потім вставити його в інше положення або ручку макета.


Не зовсім; дивіться мою відповідь щодо виправлень.
орієнтири
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.