Вы можете попробовать подписчика на событие ответа на событие. Например:
Создайте файл в CUSTOM_MODULE/src/EventSubscriber/SetSessionCookieSubscriber.php
пространство имен Drupal\CUSTOM_MODULE\EventSubscriber;
используйте Symfony\Component\HttpKernel\Event\FilterResponseEvent;
используйте Symfony\Component\HttpKernel\KernelEvents;
используйте Symfony\Component\EventDispatcher\EventSubscriberInterface;
используйте Symfony\Component\HttpFoundation\Request;
класс SetSessionCookieSubscriber реализует EventSubscriberInterface {
публичная функция onResponse (FilterResponseEvent $event) {
/** @var Запрос $request */
$запрос = $event->getRequest();
// Проверяем, правильный ли это запрос, например отправка фасетов
$session = $request->getSession();
// Проверяем значения сеанса
$response = $event->getResponse();
/** Здесь находится ваш пользовательский код */
$response->headers->setCookie(new Cookie(...));
}
общедоступная статическая функция getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = ['onResponse'];
вернуть $события;
}
}
Зарегистрируйте его в файле сервисов CUSTOM_MODULE.services.yml
Сервисы:
CUSTOM_MODULE.setsessioncookie:
класс: Drupal\CUSTOM_MODULE\EventSubscriber\SetSessionCookieSubscriber
теги:
- {имя: event_subscriber}