Puncte:1

Dezactivați butonul „Adăugați link” din entity.menu.edit_form pentru anumite roluri

drapel ng

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());
    }

  }

}

drapel cn
Probabil că va trebui să adăugați un RouteSubscriber și să modificați permisiunea/callback-ul de acces folosit pentru ruta `entity.menu.add_link_form`.Linkul nu face parte din formularul de editare a meniului, așa că un cârlig de modificare a formularului nu va funcționa pentru acesta

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.