Puncte:0

Cum acord unui rol permisiunea de a goli memoria cache?

drapel us

Am scos Administrați configurația site-ului permisiunea unui rol, dar am nevoie de utilizatori cu acel rol pentru a șterge memoria cache din /admin/config/development/performance.

Știu, există hook_menu_alter() în Drupal 7, dar cum rămâne cu Drupal 8?

leymannx avatar
drapel ne
Răspunde asta la întrebarea ta? [Cum se acordă unui rol de „editor” permisiunea de reconstruire/ștergere cache?](https://drupal.stackexchange.com/questions/234270/how-to-give-an-editor-role-rebuild-clear-cache-permission )
Puncte:1
drapel us

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.

ANDREW-LVIV avatar
drapel us
Mulțumiri! Funcționează ca un farmec.
leymannx avatar
drapel ne
Acesta ar fi un răspuns minunat pentru https://drupal.stackexchange.com/questions/234270/how-to-give-an-editor-role-rebuild-clear-cache-permission
apaderno avatar
drapel us
@leymannx Ar trebui să extind răspunsul pentru a afișa mai mult cod decât are, inclusiv codul de utilizat în al doilea scenariu.
ANDREW-LVIV avatar
drapel us
Sugestia actuală este exact ceea ce căutam.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.