J'essaie d'implémenter un abonné d'événement KernelEvents :: REQUEST pour effectuer une action sur le chargement de la page.
J'ai besoin que cet événement se déclenche, que la page demandée existe ou non dans le cache Drupal - il semble que KernelEvents :: REQUEST ne se déclenche pas lorsque Drupal sert quelque chose à partir du cache.
Y a-t-il un événement que je peux utiliser pour y parvenir, ou dois-je implémenter mes exigences en tant que middleware?
8
event-subscriber
kiamlaluno
la source
la source
Réponses:
Le cache dynamique souscrit un événement avec la priorité 27. Si vous voulez que votre code s'exécute avant cela, vous devez utiliser une priorité> 27:
Qui exécute DynamicPageCacheSubscriber :: onRequest ..
la source
['checkForRediret', 30];
cela a fonctionné comme prévu.Drupal 8 a un cache à deux niveaux, un cache de page et un cache de page dynamique.
Oui, vous pouvez intercepter le cache de page dynamique comme mentionné @ 4k4. Le problème que vous rencontrez est plus susceptible d'intercepter le cache de pages. La clé est ici .
Il existe quelques solutions pour cela:
Ajoutez une nouvelle classe qui implémente 'HttpKernelInterface' et enregistrez 'http_middleware' avec une priorité supérieure à 200 (280 suffira). Voir la classe 'PageCache' et les implémentations pour les références.
Créez une nouvelle classe pour modifier le «PageCache» existant en l'étendant à partir de «ServiceProviderBase». Vérifiez ceci pour les références ici . Ensuite, créez une nouvelle classe pour étendre le «PageCache».
Voici les références de code:
Il s'agit de StaticCacheServiceProvider.php:
Voici StaticCache.php:
L'espoir aide.
la source