迭代 Shopware Array 并试图让密钥不起作用

Iterating over Shopware Array and trying to get the key not working

你好,我目前正在尝试获取 Shopware 6 中第一个菜单导航的描述。 为此,我使用数组 page.header.navigation.active.breadcrumb 并在 page.header.navigation.tree[key].description 中使用它的键,但我的键值为空。 这是因为钥匙无缘无故变空了。

这是我的代码:

{% sw_extends "@Storefront/storefront/section/cms-section-sidebar.html.twig" %}

{% set topMenu = null %}
{% for key, value in page.header.navigation.active.breadcrumb %}
    {% if loop.index == 2 %}
        {% set topMenu = value %}
        {# {% set topMenuDescription = page.header.navigation.tree[key].category.description %} #}
        {% set topMenuDescription = key %}
    {% endif %}
{% endfor %}
{% set currentMenu = page.header.navigation.active.breadcrumb | last %}
{# {% set currentMenu = page.header.navigation.active.name %} #}
{# {% set topMenuDescription = page.header.navigation.active.description %} #}
{# {% if ! topMenuDescription %}
    {% set topMenuDescription = page.header.navigation.active.description %}
{% endif %} #}

{% block section_main_content_block %}
    <div class="category-top">
        <div class="category-banner">
            <img src="/media/6a/fd/8b/1632946677/listing-banner.jpg">
            <div class="category-banner-headlines">
                {% if (currentMenu != topMenu) %}
                    <h3>{{ topMenu }}<h3>
                    <h2>{{ currentMenu }}<h2>
                {% else %}
                    <h2 class="sameMenu">{{ currentMenu }}<h2>
                {% endif %}
            </div>
        </div>
        <div class="category-description">
            <h1>{{ currentMenu }}</h1>
            {{ topMenuDescription | trans | raw }}
        </div>
    </div>
    {{ parent() }}
{% endblock %}

这也是我想要获取的密钥的结构: key-i-want-to-get

这是我想要得到的描述: description-i-want-to-get

旁注:我的例子中的描述是空的,因为我在单独的测试区做展示,我没有在那里设置描述

topMenuDescription 为空的原因是变量只存在于您创建的 {% for %} 循环的范围内。在此循环之外,变量不存在。

为了解决这个问题,您需要通过在 {% for %}-loop

之外定义变量来改变 topMenuDescription 的范围
{% set topMenuDescription = null %}
{% for key, value in page.header.navigation.active.breadcrumb %}
    {% if loop.index == 2 %}
        {% set topMenu = value %}
        {# {% set topMenuDescription = page.header.navigation.tree[key].category.description %} #}
        {% set topMenuDescription = key %}
    {% endif %}
{% endfor %}

旁注

你真的应该在开发时启用 twig 的调试,因为你当前的代码片段会抛出一个 RuntimeError 解释变量不存在。