Puteți încerca un abonat la eveniment de răspuns la eveniment. Pentru ex:
Creați un fișier în CUSTOM_MODULE/src/EventSubscriber/SetSessionCookieSubscriber.php
spațiu de nume Drupal\CUSTOM_MODULE\EventSubscriber;
utilizați Symfony\Component\HttpKernel\Event\FilterResponseEvent;
utilizați Symfony\Component\HttpKernel\KernelEvents;
utilizați Symfony\Component\EventDispatcher\EventSubscriberInterface;
utilizați Symfony\Component\HttpFoundation\Request;
clasa SetSessionCookieSubscriber implementează EventSubscriberInterface {
funcția publică onResponse(FilterResponseEvent $event) {
/** @var Solicitare $cerere */
$cerere = $eveniment->getRequest();
// Verificați dacă aceasta este cererea corectă, de exemplu postarea fațetelor
$session = $request->getSession();
// Verificați valorile sesiunii
$răspuns = $eveniment->getResponse();
/** Codul personalizat merge aici */
$răspuns->anteturi->setCookie(nou cookie(...));
}
funcție publică statică getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = ['onResponse'];
returnează $evenimente;
}
}
Înregistrați-l în fișierul dvs. de servicii CUSTOM_MODULE.services.yml
Servicii:
CUSTOM_MODULE.setsessioncookie:
clasa: Drupal\CUSTOM_MODULE\EventSubscriber\SetSessionCookieSubscriber
Etichete:
- { nume: event_subscriber }