Magento2 – Difference Between referenceContainer and referenceBlock

layoutmagento2magento2-dev-beta

Both referenceBlock and referenceContainer entities are used in layout in magento2.
What is the main difference between them and how can I relate these entities to magento1.*.

Best Answer

basically containers are the equivalent of the core/text_list blocks in magento 1.
"philosophically" they work the same, the only difference is that containers are predefined blocks that only support other child blocks.
Some examples are content, after.body.start, header-wrapper.
You can see all defined containers for example in the Magento/Theme/view/base/page_layout/*.

Here is an example from 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>

basically what's defined as <container name="..." /> can be accessed by referenceContainer. what's declared as <block .... /> can be referenced by referenceBlock

Related Topic