logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Проверka pristupa + kešabilnost

19/06/2025, by Ivan

Proveravači pristupa za rutu, hook_entity_access() i sve što treba da vrati objekat AccessResultInterface, moraju dodati odgovarajuće metapodatke kešabilnosti.

Ako još niste čitali, pogledajte cache tags, cache contexts i max-age.

Parametri provere pristupa

Sistem za proveru pristupa će dobiti različite parametre – najmanje korisnički nalog (AccountInterface) i često objekat. Zatim donosi odluku na osnovu osobina tih parametara.

Kešabilna zavisnost od $parameter treba biti dodata ako promena bilo koje osobine tog parametra menja rezultat pristupa.

Na primer:

$access_result = AccessResult::allowedIf($node->isPublished())
  // Rezultat pristupa zavisi od svojstva objekta koje može da se promeni: to je kešabilna zavisnost.
  ->addCacheableDependency($node);

Još jedan čest slučaj je kada rezultat pristupa zavisi od svojstva koje se ne može menjati (obično identifikator, UUID). Na primer, dozvoliti pristup ako je dati korisnički nalog vlasnik objekta:

$access_result = AccessResult::allowedIf($node->getOwnerId() === $account->id())
  // Rezultat pristupa zavisi od vlasnika noda, koji može da se promeni.
  ->addCacheableDependency($node);

// Rezultat pristupa takođe zavisi od korisničkog naloga, a ID korisničkog naloga se nikada ne menja. Zato ne treba dodavati $account kao kešabilnu zavisnost.

// Ali, ako je $account trenutni korisnik, a ne neki fiksirani korisnik, takođe moramo osigurati da se kešira po korisniku, kako ne bismo pokretali proveru pristupa jednom i ponovo koristili rezultat za sve korisnike.
if ($account->id() === \Drupal::currentUser()->id()) {
  $access_result->cachePerUser();
}
Source authors:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.