Jaka jest różnica między <action method=”unsetChild”>
i <remove name=""/>
?
Obie funkcje służą do usuwania bloku z układu.
Czy ktoś mógłby wyjaśnić na przykład?
<remove name="" />
działa w globalnym zakresie bloków Mage_Core_Model_Layout
. Są one gromadzone Mage_Core_Model_Layout::generateXml()
i wykorzystywane, aby nawet nie tworzyć instancji bloku o określonej nazwie . Również wszystkie bloki potomne zadeklarowane dla <remove />
bloku ed będą również nie być instancja .
<action method="" />
aka Mage_Core_Block_Abstract::unsetChild()
to metoda na poziomie bloku, która usuwa z listy wskazany blok potomny (według aliasu , a nie nazwy ) z instancji bloku nadrzędnego, na której wywoływana jest akcja. Powoduje to najczęściej „znikanie” bloku z renderowanego wyjścia, mimo że instancja bloku jest nadal tworzona. Używany w połączeniu z metodami ::append()
lub ::insert()
służy do wykonywania „ruchu”.
alias
for for child jest ustawiony na jego wartośćname
. 👍<remove name="" />
, Po zakończeniu wszystkich układów Magento całkowicie usunie blok o podanej nazwie = "", niezależnie od tego, do którego uchwytu układu został dodany. Za pomocą tej metody nie można usunąć bloku z jednej lokalizacji, a następnie dodać go do innej<action method="unsetChild">
działa tylko w kontekście, w którym jest używany. unsetChild jest stworzony do przenoszenia istniejących bloków z jednego miejsca do drugiego. Musisz użyć tej metody, jeśli chcesz usunąć określony blok z określonego uchwytu układu, a następnie wstawić go do innego położenia lub uchwytu układu.źródło