Aș dori să ascund butonul „Adăugați link” din menu.edit_form pentru anumite roluri.
Rulând dpm($form) pentru acest formular, nu găsesc acel buton acolo.
În nucleu există menu_ui.links.action.yml cu acest fragment:
entity.menu.add_link_form:
nume_rută: entity.menu.add_link_form
titlu: „Adăugați link”
clasa: \Drupal\menu_ui\Plugin\Menu\LocalAction\MenuLinkAdd
apare pe:
- entity.menu.edit_form
Nu înțeleg cum să ascund acest buton în Hook menu_edit_form_alter.
Ceva indicii?
După ce Clives indică mai jos, am adăugat un abonat de rutare, dar utilizatorul fără rol de administrator are încă acces la formular.
Acest lucru funcționează bine în alte locuri, de ex. Formular web, dar nu la admin/structure/meniu/manage/{meniu}/add
L-am încercat și cu o rută diferită din meniul Module, dar încă nicio șansă.
<?php
spațiu de nume Drupal\hw_menu\Routing;
utilizați Drupal\Core\Routing\RouteSubscriberBase;
utilizați Symfony\Component\Routing\RouteCollection;
/**
* Clasa RouteSubscriber
*
* ascunderea componentelor de editare a meniului pentru non-administratori
*
* @pachet Drupal\hw_menu\Routing
*/
clasa RouteSubscriber extinde RouteSubscriberBase {
/**
* {@inheritdoc}
*/
funcția protejată alterRoutes(RouteCollection $colecție) {
dacă ($rută = $colecție->get('entity.menu.add_link_form')) {
dpm($route->getRequirements());
$route->setRequirement('_rol', 'administrator');
dpm($route->getRequirements());
}
}
}