คุณสามารถลองใช้ผู้สมัครสมาชิกกิจกรรมการตอบกลับเหตุการณ์ สำหรับเช่น:
สร้างไฟล์ใน 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 */
$request = $event->getRequest();
// ตรวจสอบว่าเป็นคำขอที่ถูกต้องหรือไม่ เช่น โพสต์ facets
$session = $request->getSession();
// ตรวจสอบค่าเซสชัน
$response = $event->getResponse();
/** รหัสที่กำหนดเองของคุณอยู่ที่นี่ */
$response->headers->setCookie(คุกกี้ใหม่(...));
}
ฟังก์ชั่นคงที่สาธารณะ getSubscribedEvents () {
$events[KernelEvents::RESPONSE][] = ['onResponse'];
ส่งคืนเหตุการณ์ $;
}
}
ลงทะเบียนในไฟล์บริการของคุณ CUSTOM_MODULE.services.yml
บริการ:
CUSTOM_MODULE.setsessioncookie:
คลาส: Drupal\CUSTOM_MODULE\EventSubscriber\SetSessionCookieSubscriber
แท็ก:
- { ชื่อ: event_subscriber }