首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写KnpMenu子菜单项

重写KnpMenu子菜单项
EN

Stack Overflow用户
提问于 2016-04-08 14:20:17
回答 1查看 665关注 0票数 1

我已经用KnpMenu做了一个菜单,我正在尝试重写子菜单

我就是这样添加子菜单的。

代码语言:javascript
复制
$menu
    ->addChild('sidebar.front.servers', ['route' => 'server_index'])
    ->setExtras([
        'icon'               => 'fa fa-hdd-o',
        'regex'              => '#^/servers/#',
    ])
;
$menu['sidebar.front.servers']
    ->addChild('nnanana', ['route' => 'server_index'])
;

我在knp_menu.html.twig上搜索,以找到呈现子菜单的内容。

我找到了这个呈现子菜单列表和项目的人。

代码语言:javascript
复制
{% block list %}
    {% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %}
        {% import _self as knp_menu %}
        <ul{{ knp_menu.attributes(listAttributes) }}>
            {{ block('children') }}
        </ul>
     {% endif %}
{% endblock %}

{% block children %}
    {# save current variables #}
    {% set currentOptions = options %}
    {% set currentItem = item %}
    {# update the depth for children #}
    {% if options.depth is not none %}
        {% set options = options|merge({'depth': currentOptions.depth - 1}) %}
    {% endif %}
    {# update the matchingDepth for children #}
    {% if options.matchingDepth is not none and options.matchingDepth > 0 %}
    {% set options = options|merge({'matchingDepth': currentOptions.matchingDepth - 1}) %}
    {% endif %}
    {% for item in currentItem.children %}
        {{ block('item') }}
    {% endfor %}
    {# restore current variables #}
    {% set item = currentItem %}
    {% set options = currentOptions %}
{% endblock %}

这会将类放到子菜单列表中。

代码语言:javascript
复制
{%- set childrenClasses = item.childrenAttribute('class') is not empty ? [item.childrenAttribute('class')] : [] %}
{%- set childrenClasses = childrenClasses|merge(['menu_level_' ~ item.level]) %}
{%- set listAttributes = item.childrenAttributes|merge({'class': childrenClasses|join(' ') }) %}

这将呈现所有子菜单项。

代码语言:javascript
复制
{{ block('list') }}

但是当我试图覆盖模板中的这个块时,就像这样

代码语言:javascript
复制
{% block item %}
    {% import 'knp_menu.html.twig' as knp_menu %}
    <a href="#">test</a>
{% endblock %}

这是不工作和菜单不再呈现,我只有test显示.

我完全相同的做法,覆盖所有的菜单项和这项工作。

我怎样才能覆盖这个子菜单?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-03 07:53:13

我找到了覆盖子菜单项的方法。

子菜单项以与主菜单项相同的代码呈现。

因此,要覆盖它,只需添加这样的小枝条件,并在里面做任何您想做的事情。

代码语言:javascript
复制
{% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %}
    <a href="#">
    <i class="{{ item.extra('submenu-icon') }}"></i>
{% else %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36502038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档