迭代 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
解释变量不存在。
你好,我目前正在尝试获取 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
解释变量不存在。