Robiłem trochę pracy w Magento 2 i zastępowałem niektóre moduły, które zainstalowałem (na froncie).
Dzisiaj jednak natknąłem się na coś, czego wcześniej nie spotkałem. Moduł, którego używałem, zawiera blok, który ma następujące elementy:
<referenceBlock name="product.info.details">
<block class="Vender\Module\Block\Catalog\Related" name="posts.tab" as="blog.posts"
template="Vender_Module::catalog/posts.phtml" group="detailed_info">
</block>
</referenceBlock>
Ustawia swoją nazwę:
posts.tab
a następnie używa as, aby umożliwić wywołanie za pomocą:
as = "blog.posts"
Kiedy próbowałem odwołać się do bloku, który ma zostać usunięty, używając nazwy as , zauważyłem, że nie usuwa on go ze strony:
<referenceBlock name="product.info.details">
<referenceBlock as="blog.posts" remove="true"/>
</referenceBlock>
więc poszedłem zobaczyć, co strona faktycznie wywołała w interfejsie (wystarczy, że została przemianowana gdzie indziej lub nie używała nazwy posts.tab) - nazwa bloku jest wywoływana przez posts.tab , co jest w porządku ponieważ mogę po prostu odwołać się do tego bloku, aby go usunąć. To działało dobrze.
Ale moje pytanie brzmi: dlaczego blok nie jest przeciągany za pomocą as i zamiast tego jest przeciągany za pomocą nazwy .
Po drugie jaki jest sens w jak , bo oczywiście bloki nie mogą mieć sprzeczne nazwy i tak powinno być unikalne - ale może być całkowicie błędne.
źródło