根据某些条件显示/隐藏菜单选项

时间:2019-01-09 09:24:14

标签: php symfony-3.4 symfony2-easyadmin easyadmin

我想根据用户表中的某些字段显示/隐藏菜单中的选项。存在做到这一点的方法吗?例如,如果user.isFirst()然后从菜单中隐藏选项“产品”。

easy_admin:
site_name: '<img src="/build/images/logo.png" alt="dfg" />'
formats:
    datetime: 'Y-m-d'
design:
    brand_color: '#009036'
    color_scheme: 'light'
    form_theme: 'vertical'
    templates:
        layout: 'admin/default/layout.html.twig' #for rewrite layout and add edit my account button

    menu:
    - label: 'menu.labels.dashboard'
      route: 'route_declarant_dashboard'
      icon: 'dashboard'
      default: true
      params:
          menuIndex: 0
    - label: 'menu.labels.products'
      entity: 'Products'
      icon: 'shopping-bag'
    - label: 'menu.labels.users'
      entity: 'Users'
      icon: 'bullhorn'  

所以这个想法是:

  1. 隐藏“产品”->如果user.isFirst()

  2. 显示“产品”->其他情况。

1 个答案:

答案 0 :(得分:0)

您可以通过在文件夹menu.html.twig中创建app/templates/easy_admin/来扩展简单的管理菜单(doc

{% extends '@!EasyAdmin/default/menu.html.twig' %}

<!-- [...] extract for example -->
{% if is_granted("CAN_SEE_PRODUCT")) and item.label = 'Products' %} <!-- your if condition of viewing menu link -->
    <a href="{{ path }}" {% if item.target|default(false) %}target="{{ item.target }}"{% endif %}>
            {% if item.icon is not empty %}<i class="fa {{ item.icon }}"></i>{% endif %}
            <span>{{ item.label|trans(domain = translation_domain) }}</span>
            {% if item.children|default([]) is not empty %}<span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span>{% endif %}
    </a>
{% endif %}
<!-- [...] extract -->

这只会隐藏链接。除非您更改Easy Admin Controller,否则该用户仍将能够访问其他页面。 您可以从此github pull request discution中获得一些启发,可以根据用户角色显示菜单,以便于管理员管理。

相关问题