Рейтинг:1

Отключите кнопку «Добавить ссылку» в entity.menu.edit_form для определенных ролей.

флаг ng

Я хотел бы скрыть кнопку «Добавить ссылку» в menu.edit_form для определенных ролей. Запустив dpm($form) для этой формы, я не могу найти там эту кнопку. В ядре есть menu_ui.links.action.yml с этим фрагментом:

  entity.menu.add_link_form:
  route_name: entity.menu.add_link_form
  title: 'Добавить ссылку'
  класс: \Drupal\menu_ui\Plugin\Menu\LocalAction\MenuLinkAdd
  появляется_на:
  - сущность.меню.edit_form

Я не понимаю, как скрыть эту кнопку в Hook menu_edit_form_alter. Любые подсказки?

После подсказки Клайва, приведенной ниже, я добавил Routingsubscriber, но пользователь без роли администратора по-прежнему имеет доступ к форме. Это отлично работает в других местах, например. Веб-форма, но не в admin/structure/menu/manage/{menu}/add Я пробовал это с другим маршрутом из модуля меню, но все равно без шансов.

    <?php

пространство имен Drupal\hw_menu\Routing;

используйте Drupal\Core\Routing\RouteSubscriberBase;
используйте Symfony\Component\Routing\RouteCollection;

/**
 * Класс RouteSubscriber
 *
 * скрытие компонентов редактирования меню для не-админов
 *
 * @пакет Drupal\hw_menu\Маршрутизация
 */
класс RouteSubscriber расширяет RouteSubscriberBase {

  /**
   * {@inheritdoc}
   */
  защищенная функция alterRoutes(RouteCollection $ collection) {

    если ($ route = $ collection-> get ('entity.menu.add_link_form')) {
      dpm($route->getRequirements());
      $route->setRequirement('_role', 'администратор');
      dpm($route->getRequirements());
    }

  }

}

флаг cn
Возможно, вам потребуется добавить RouteSubscriber и изменить обратный вызов разрешения/доступа, используемый для маршрута `entity.menu.add_link_form`.Ссылка не является частью формы редактирования меню, поэтому хук изменения формы не будет работать для этого.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.