คุณสามารถแก้ไขการอนุญาตที่ใช้เพื่อเข้าถึงเส้นทางตามที่อธิบายไว้ใน การแก้ไขเส้นทางที่มีอยู่และเพิ่มเส้นทางใหม่ตามเส้นทางแบบไดนามิก. ในกรณีเฉพาะ รหัสที่ใช้ใน alterRoutes(คอลเลคชัน RouteCollection $)
จะเป็นดังต่อไปนี้
ตั้งแต่ จัดการประสิทธิภาพของไซต์ สิทธิ์เป็นสิทธิ์ที่กำหนดเอง จำเป็นต้องเพิ่มเป็นสิทธิ์ใหม่โดยโมดูลที่ใช้คลาสผู้สมัครสมาชิกเส้นทาง ตามที่อธิบายไว้ใน วิธีสร้างสิทธิ์แบบกำหนดเองบน Drupal 8 - 9.
สำหรับโมดูลที่มีชื่อเครื่อง โมดูลของฉันรหัสจะคล้ายกับรหัสต่อไปนี้
mymodule.permissions.yml
จัดการประสิทธิภาพของไซต์:
ชื่อเรื่อง: 'จัดการประสิทธิภาพของไซต์'
คำอธิบาย: 'เข้าสู่หน้าการตั้งค่าประสิทธิภาพของไซต์'
จำกัดการเข้าถึง: จริง
mymodule.services.yml
บริการ:
mymodule.route_subscriber:
คลาส: Drupal\mymodule\Routing\RouteSubscriber
แท็ก:
- { ชื่อ: event_subscriber }
src/Routing/RouteSubscriber.php
เนมสเปซ Drupal\mymodule\Routing;
ใช้ Drupal\Core\Routing\RouteSubscriberBase;
ใช้ Symfony\Component\Routing\RouteCollection;
/**
* ฟังเหตุการณ์เส้นทางแบบไดนามิก
*/
คลาส RouteSubscriber ขยาย RouteSubscriberBase {
/**
* {@inheritdoc}
*/
ฟังก์ชันที่ได้รับการป้องกัน alterRoutes (RouteCollection $collection) {
ถ้า ($route = $collection->get('system.performance_settings')) {
$route->setRequirement('_permission', 'ดูแลประสิทธิภาพของไซต์');
}
}
}
หากผู้ใช้ที่มีบทบาทนั้นไม่ควรเข้าถึงการตั้งค่าในหน้านั้น (เก็บเอาไว้ และ การเพิ่มประสิทธิภาพแบนด์วิธ) แต่สามารถล้างแคชได้เท่านั้น ฉันจะใช้เส้นทางที่กำหนดเองซึ่งแสดงแบบฟอร์มการยืนยันและล้างแคช (ซึ่งหมายถึงการโทร drupal_flush_all_caches()
) เมื่อผู้ใช้ยืนยันการดำเนินการ