Я хотел бы скрыть кнопку «Добавить ссылку» в 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());
}
}
}