Я хочу показать / скрыть опцию из меню в зависимости от поля в пользовательской таблице. Есть способ сделать это? Например, если 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'
Итак, идея такова:
Скрыть «Продукты» -> если user.isFirst ()
Показать «Продукты» -> другие случаи.
Вы можете расширить простое меню администратора (доктор) путем создания menu.html.twig
в папке app/templates/easy_admin/
{% 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 discution о показе меню в соответствии с ролями пользователя для легкого администратора.
Других решений пока нет …