Magento 2 вложенные блоки

Я мигрирую из Magento 1.x в Magento 2

Я создал default.xml-файл для настройки существующего макета.

моя ситуация заключается в том, что у меня есть div с именем "main-header", и я хочу вложенный div внутри него с именем "menu".

теперь, я знаю, что блоки могут иметь шаблоны. Поэтому я попытался создать вложенную блочную структуру (не знаю, действительна ли она в Magento 2):

<referenceContainer name="header.container">
        <container name="common-header" label="Header common to all pages" as="common-header" htmlTag="div" htmlClass="main-header">
            <block class="MymoduleTestBlockHeader" template="header/top_header.phtml">
                <block name="header.menu" class="MymoduleTestBlockMenu" template="header/menu.phtml"/>
            </block>
        </container>
    </referenceContainer>

в top_header.phtml, я пытаюсь позвонить:

<?php $block->getChildHtml('header.menu'); ?>

I знайте приведенное выше утверждение, которое я взял из Magento 1.x

2 ответов


глупая ошибка, мне не хватает Эха:

<?php echo $block->getChildHtml('header.menu'); ?>

вместо этого создайте вложенные контейнеры, которые должны работать нормально, вы можете добавлять любые классы и использовать любой тег для обертывания.