Điểm:0

Làm cách nào để tôi cấp cho một vai trò quyền xóa bộ nhớ cache?

lá cờ us

tôi đã gỡ bỏ Quản lý cấu hình trang web quyền từ một vai trò, nhưng tôi cần người dùng có vai trò đó xóa bộ nhớ đệm từ/admin/config/Development/Performance.

Tôi biết, có hook_menu_alter() trong Drupal 7, nhưng còn Drupal 8 thì sao?

leymannx avatar
lá cờ ne
Điều này có trả lời câu hỏi của bạn không? [Làm cách nào để cấp quyền xây dựng lại/xóa bộ nhớ cache cho vai trò 'biên tập viên'?](https://drupal.stackexchange.com/questions/234270/how-to-give-an-editor-role-rebuild-clear-cache-permission )
Điểm:1
lá cờ us

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ớ đệmtố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.

ANDREW-LVIV avatar
lá cờ us
Cảm ơn! Hoạt động như một nét duyên dáng.
leymannx avatar
lá cờ ne
Đó sẽ là một câu trả lời tuyệt vời cho https://drupal.stackexchange.com/questions/234270/how-to-give-an-editor-role-rebuild-clear-cache-permission
apaderno avatar
lá cờ us
@leymannx Tôi nên mở rộng câu trả lời để hiển thị nhiều mã hơn, bao gồm cả mã sẽ sử dụng trong kịch bản thứ hai.
ANDREW-LVIV avatar
lá cờ us
Đề xuất hiện tại chính xác là những gì tôi đang tìm kiếm.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.