Was ist der Unterschied zwischen <action method=”unsetChild”>
und <remove name=""/>
?
Mit beiden Funktionen wird ein Block aus dem Layout entfernt.
Könnte jemand mit einem Beispiel erklären?
<remove name="" />
arbeitet im globalen Blockumfang von Mage_Core_Model_Layout
. Diese werden in gesammelt Mage_Core_Model_Layout::generateXml()
und verwendet, um zu verhindern, dass der Block mit dem angegebenen Namen auch nur instanziiert wird . Untergeordnete Blöcke, die für einen <remove />
ed-Block deklariert wurden , werden ebenfalls nicht instanziiert .
<action method="" />
aka Mage_Core_Block_Abstract::unsetChild()
ist eine Methode auf Blockebene, bei der der angegebene untergeordnete Block (nach Alias , nicht nach Name ) aus der übergeordneten Blockinstanz entfernt wird, für die die Aktion aufgerufen wird. Dies führt häufig dazu, dass der Block aus der gerenderten Ausgabe "verschwindet", obwohl die Blockinstanz noch erstellt wird. Wird in Kombination mit den Methoden ::append()
oder ::insert()
verwendet, um einen "Zug" auszuführen.
alias
für ein Kind auf sein gesetztname
. 👍<remove name="" />
, Wenn alle Layouts fertig sind, löscht Magento den Block mit dem angegebenen Namen = "" vollständig, unabhängig davon, zu welchem Layout-Handle er hinzugefügt wurde. Mit dieser Methode ist es nicht möglich, einen Block von einer Position zu entfernen und dann zu einer anderen hinzuzufügen<action method="unsetChild">
funktioniert nur in dem Kontext, in dem es verwendet wird. unsetChild wird erstellt, um vorhandene Blöcke von einem Ort an einen anderen zu verschieben. Sie müssen diese Methode verwenden, wenn Sie einen bestimmten Block aus einem bestimmten Layout-Handle entfernen und ihn dann an einer anderen Position oder in einem anderen Layout-Handle einfügen möchten.quelle