Magento2: quelle est la différence entre referenceContainer et referenceBlock

23

Les entités referenceBlocket referenceContainersont utilisées dans la mise en page dans magento2.
Quelle est la principale différence entre eux et comment puis-je relier ces entités à magento1. *.

Yogesh Karodiya
la source

Réponses:

38

fondamentalement, les conteneurs sont l'équivalent des core/text_listblocs dans magento 1.
"philosophiquement", ils fonctionnent de la même manière, la seule différence est que ce containerssont des blocs prédéfinis qui ne prennent en charge que d'autres blocs enfants.
Quelques exemples sont content, after.body.start, header-wrapper.
Vous pouvez voir tous les conteneurs définis par exemple dans le Magento/Theme/view/base/page_layout/*.

Voici un exemple de 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>

essentiellement ce qui est défini comme <container name="..." />accessible par referenceContainer. ce qui est déclaré comme <block .... />pouvant être référencé parreferenceBlock

Marius
la source