ฉันต้องการซ่อนปุ่ม "เพิ่มลิงก์" ใน menu.edit_form สำหรับบางบทบาท
กำลังเรียกใช้ dpm($form) สำหรับแบบฟอร์มนี้ ฉันไม่พบปุ่มนั้นในนั้น
ในแกนกลางมี menu_ui.links.action.yml พร้อมตัวอย่างนี้:
entity.menu.add_link_form:
route_name: entity.menu.add_link_form
ชื่อเรื่อง: 'เพิ่มลิงค์'
คลาส: \Drupal\menu_ui\Plugin\Menu\LocalAction\MenuLinkAdd
ปรากฏ_บน:
-entity.menu.edit_form
ฉันไม่เข้าใจวิธีซ่อนปุ่มนี้ใน Hook menu_edit_form_alter
คำแนะนำใด ๆ
หลังจากคำแนะนำของ Clives ด้านล่าง ฉันได้เพิ่ม routingsubcriber แล้ว แต่ผู้ใช้ที่ไม่มีบทบาทผู้ดูแลระบบยังคงสามารถเข้าถึงแบบฟอร์มได้
ใช้งานได้ดีที่อื่นเช่น เว็บฟอร์ม แต่ไม่ใช่ที่ admin/structure/menu/manage/{menu}/add
ฉันลองด้วยเส้นทางที่แตกต่างจากโมดูลเมนูด้วย แต่ก็ยังไม่มีโอกาส
<?php
เนมสเปซ Drupal\hw_menu\Routing;
ใช้ Drupal\Core\Routing\RouteSubscriberBase;
ใช้ Symfony\Component\Routing\RouteCollection;
/**
* คลาส RouteSubscriber
*
* ซ่อนองค์ประกอบการแก้ไขเมนูสำหรับผู้ที่ไม่ใช่ผู้ดูแลระบบ
*
* @package Drupal\hw_menu\Routing
*/
คลาส RouteSubscriber ขยาย RouteSubscriberBase {
/**
* {@inheritdoc}
*/
ฟังก์ชันที่ได้รับการป้องกัน alterRoutes (RouteCollection $collection) {
ถ้า ($route = $collection->get('entity.menu.add_link_form')) {
dpm($route->getRequirements());
$route->setRequirement('_role', 'administrator');
dpm($route->getRequirements());
}
}
}