Różnica między <remove name = ”" /> a <action method = ”unsetChild”> w układzie

21

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?

MeenakshiSundaram R.
źródło

Odpowiedzi:

21

<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”.

zalety
źródło
Aby dodać do tego, jeśli blok nie ma aliasu, wówczas będzie pasował do nazwy.
Ben Crook,
2
Prawidłowo, gdy nie podano aliasu, parametr aliasfor for child jest ustawiony na jego wartość name. 👍
zaznacza
2

<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.

Sohel Rana
źródło
Nie do końca; zobacz moją odpowiedź na poprawki.
zyskuje