如何将一个块移动到另一个块

How to move a block into another block

@Storefront/storefront/base.html.twig 中定义了块 base_headerbase_navigation。我想将 base_navigation 移动到 base_header 以实现这样的标记:

<header>
    <div class="header-main">
        <!-- base_header_inner -->
    </div>
    <div class="nav-main">
        <!-- base_navigation_inner -->
    </div>
</header>

我已经尝试过以下方法:

{% sw_extends '@Storefront/storefront/base.html.twig' %}

{% block base_header %}
    <header>
        <div class="header-main">
            {% block base_header_inner %}
                {{ parent() }}
            {% endblock %}
        </div>

        {% block base_navigation %}
            {{ parent() }}
        {% endblock %}
    </header>
{% endblock %}

但它并没有移动它,而是简单地在 header 中创建了一个新导航,但保留了原来的导航。

您可以清空 twig 文件中的块并使用块函数加载原始块(https://twig.symfony.com/doc/3.x/functions/block.html)

您的文件看起来像这样:

{% sw_extends '@Storefront/storefront/base.html.twig' %}

{% block base_header %}
    <header class="header-main">
        {% block base_header_inner %}
            <div class="container">
                hallo
                {% sw_include '@Storefront/storefront/layout/header/header.html.twig' %}
            </div>
        {% endblock %}

        {{ block('base_navigation', '@Storefront/storefront/base.html.twig') }}
    </header>
{% endblock %}

{% block base_navigation %}
{% endblock %}