logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Проверка доступа + кешируемость

05/07/2025, by Ivan

Les vérificateurs d'accès aux routes, hook_entity_access() et tout ce qui est nécessaire pour retourner un objet AccessResultInterface doivent ajouter les métadonnées de mise en cache appropriées.

Si vous ne les avez pas encore lus, consultez les cache tags, cache contexts et max-age.

Paramètres de vérification d'accès

Le mécanisme de vérification d'accès recevra différents paramètres - au minimum, le compte utilisateur (AccountInterface) et souvent un objet. Il prendra alors une décision basée sur les propriétés de ces paramètres.

Une dépendance mise en cache au $parameter doit être ajoutée si la modification d'au moins une propriété de ce paramètre modifie le résultat d'accès.

Par exemple :

$access_result = AccessResult::allowedIf($node->isPublished())
  // Le résultat d'accès dépend d'une propriété de l'objet qui peut changer : c'est une dépendance mise en cache.
  ->addCacheableDependency($node);

Un autre cas fréquent est lorsque le résultat d'accès dépend d'une propriété qui ne peut pas être modifiée (généralement un identifiant, UUID). Par exemple, autoriser l'accès si ce compte utilisateur est le propriétaire de l'objet :

$access_result = AccessResult::allowedIf($node->getOwnerId() === $account->id())
  // Le résultat d'accès dépend du propriétaire du nœud, et le propriétaire peut changer.
  ->addCacheableDependency($node);

// Le résultat d'accès dépend également d'un compte utilisateur, et l'ID du compte utilisateur ne peut jamais changer. Par conséquent, il n'est pas nécessaire d'ajouter $account comme dépendance mise en cache.

// Mais, si $account est l'utilisateur courant, et non un utilisateur codé en dur, il faut aussi s'assurer que la mise en cache varie selon l'utilisateur courant, pour ne pas exécuter cette vérification d'accès une seule fois puis réutiliser son résultat pour tous les utilisateurs.
if ($account->id() === \Drupal::currentUser()->id()) {
  $access_result->cachePerUser();
}