Pregunta:
Estoy tratando de implementar un suscriptor de evento KernelEvents :: REQUEST para realizar alguna acción en la carga de la página.
Necesito que este evento se active independientemente de si la página solicitada existe en el caché de Drupal; parece que KernelEvents :: REQUEST no se activa cuando Drupal sirve algo del caché.
¿Hay algún evento que pueda usar para lograr esto, o debo implementar mis requisitos como algún tipo de middleware?
Respuesta:
La caché dinámica suscribe un evento con prioridad 27. Si desea que su código se ejecute antes, debe usar una prioridad> 27:
public static function getSubscribedEvents() {
$events = [];
// Run after AuthenticationSubscriber (necessary for the 'user' cache
// context; priority 300) and MaintenanceModeSubscriber (Dynamic Page Cache
// should not be polluted by maintenance mode-specific behavior; priority
// 30), but before ContentControllerSubscriber (updates _controller, but
// that is a no-op when Dynamic Page Cache runs; priority 25).
$events[KernelEvents::REQUEST][] = ['onRequest', 27];
Que ejecuta DynamicPageCacheSubscriber :: onRequest ..