Magento2: Was ist der Unterschied zwischen referenceContainer und referenceBlock?

23

Beide referenceBlockund referenceContainerEntities werden in magento2 im Layout verwendet.
Was ist der Hauptunterschied zwischen ihnen und wie kann ich diese Entitäten mit magento1. * In Beziehung setzen.

Yogesh Karodiya
quelle

Antworten:

38

core/text_listim grunde sind container gleichbedeutend mit den blöcken in magento 1.
"philosophisch" funktionieren sie gleich, der einzige unterschied besteht darin, dass containersvordefinierte blöcke nur andere untergeordnete blöcke unterstützen.
Einige Beispiele sind content, after.body.start, header-wrapper.
Sie können alle definierten Container zum Beispiel in der sehen Magento/Theme/view/base/page_layout/*.

Hier ist ein Beispiel von empty.xml.

<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_layout.xsd">
    <container name="root">
        <container name="after.body.start" as="after.body.start" before="-" label="Page Top"/>
        <container name="page.wrapper" as="page_wrapper" htmlTag="div" htmlClass="page-wrapper">
            <container name="global.notices" as="global_notices" before="-"/>
            <container name="main.content" htmlTag="main" htmlId="maincontent" htmlClass="page-main">
                <container name="columns.top" label="Before Main Columns"/>
                <container name="columns" htmlTag="div" htmlClass="columns">
                    <container name="main" label="Main Content Container" htmlTag="div" htmlClass="column main"/>
                </container>
            </container>
            <container name="page.bottom" as="page_bottom" label="Before Page Footer Container" after="main.content" htmlTag="div" htmlClass="page-bottom"/>
            <container name="before.body.end" as="before_body_end" after="-" label="Page Bottom"/>
        </container>
    </container>
</layout>

Grundsätzlich gilt, was als <container name="..." />zugänglich definiert ist referenceContainer. Was als deklariert ist, <block .... />kann von referenziert werdenreferenceBlock

Marius
quelle