Puteți modifica permisiunea utilizată pentru a accesa o rută, așa cum este descris în Modificarea rutelor existente și adăugarea de noi rute bazate pe cele dinamice. În cazul specific, codul folosit în alterRoutes(RouteCollection $collection)
ar fi urmatoarea.
Din momentul în care administrarea performanței site-ului permisiunea este una personalizată, trebuie adăugată ca permisiune nouă de către modulul care implementează clasa de abonat de rută, așa cum este descris în Cum se creează o permisiune personalizată pe Drupal 8 - 9.
Pentru un modul al cărui nume de mașină este modulul meu, codul ar fi similar cu următorul.
mymodule.permissions.yml
administrarea performanței site-ului:
titlu: „Administrați performanța site-ului”
descriere: „Accesați pagina de setări de performanță a site-ului”.
restricționați accesul: adevărat
mymodule.services.yml
Servicii:
mymodule.route_subscriber:
clasa: Drupal\mymodule\Routing\RouteSubscriber
Etichete:
- { nume: event_subscriber }
src/Routing/RouteSubscriber.php
spațiu de nume Drupal\mymodule\Routing;
utilizați Drupal\Core\Routing\RouteSubscriberBase;
utilizați Symfony\Component\Routing\RouteCollection;
/**
* Ascultă evenimentele dinamice ale traseului.
*/
clasa RouteSubscriber extinde RouteSubscriberBase {
/**
* {@inheritdoc}
*/
funcția protejată alterRoutes(RouteCollection $colecție) {
if ($rută = $colecție->get('system.performance_settings')) {
$route->setRequirement('_permission', 'administer site performance');
}
}
}
Dacă utilizatorii cu acel rol nu ar trebui să acceseze setările din pagina respectivă (Memorarea în cache și Optimizarea lățimii de bandă), dar numai să pot șterge memoria cache, aș implementa o rută personalizată care arată un formular de confirmare și aș șterge memoria cache (ceea ce înseamnă apelarea drupal_flush_all_caches()
) când utilizatorul confirmă operația.