Bạn có thể thay đổi quyền được sử dụng để truy cập một tuyến đường, như được mô tả trong Thay đổi các tuyến hiện có và thêm các tuyến mới dựa trên các tuyến động. Trong trường hợp cụ thể, mã được sử dụng trong alterRoutes(RouteCollection $collection)
sẽ là cái sau.
Kể từ khi quản lý hiệu suất trang web quyền là một quyền tùy chỉnh, nó cần được thêm dưới dạng quyền mới bởi mô-đun triển khai lớp thuê bao định tuyến, như được mô tả trong Cách tạo quyền tùy chỉnh trên Drupal 8 - 9.
Đối với một mô-đun có tên máy là mymodule, mã sẽ tương tự như mã sau.
mymodule.permissions.yml
quản lý hiệu suất trang web:
title: 'Quản lý hiệu suất trang web'
description: 'Truy cập trang cài đặt hiệu suất trang web.'
hạn chế truy cập: đúng
mymodule.services.yml
dịch vụ:
mymodule.route_subscriber:
lớp: Drupal\mymodule\Routing\RouteSubscriber
thẻ:
- { tên: event_subscriber }
src/Routing/RouteSubscriber.php
không gian tên Drupal\mymodule\Routing;
sử dụng Drupal\Core\Routing\RouteSubscriberBase;
sử dụng Symfony\Component\Routing\RouteCollection;
/**
* Lắng nghe các sự kiện tuyến đường năng động.
*/
lớp RouteSubscriber mở rộng RouteSubscriberBase {
/**
* {@inheritdoc}
*/
chức năng được bảo vệ alterRoutes(RouteCollection $collection) {
if ($route = $collection->get('system.performance_settings')) {
$route->setRequirement('_permission', 'quản lý hiệu suất trang web');
}
}
}
Nếu người dùng có vai trò đó không được truy cập cài đặt trong trang đó (Bộ nhớ đệm và tối ưu hóa băng thông), nhưng chỉ có thể xóa bộ đệm, tôi sẽ triển khai tuyến tùy chỉnh hiển thị biểu mẫu xác nhận và xóa bộ đệm (có nghĩa là gọi drupal_flush_all_caches()
) khi người dùng xác nhận thao tác.