Điểm:3

Có sự kiện nào liên quan đến việc tạo cookie phiên cho người dùng ẩn danh không?

lá cờ cn

Tôi cần đặt cookie bổ sung bất cứ khi nào người dùng ẩn danh nhận được cookie phiên. Ví dụ: điều này xảy ra khi chọn một khía cạnh trong API tìm kiếm. Trường hợp sử dụng cụ thể là tôi cần một cookie bổ sung được đặt riêng cho tích hợp bên thứ ba (GTranslate). hook_user_login không đáp ứng trường hợp sử dụng vì người dùng không thực sự đăng nhập nhưng họ nhận được cookie phiên khi chọn một thuộc tính. Có sự kiện nào tôi có thể đăng ký khi điều đó xảy ra để tôi có thể thêm cookie tùy chỉnh của mình không?

4uk4 avatar
lá cờ cn
Tôi không nghĩ rằng có một sự kiện cụ thể, nhưng bạn có thể đăng ký [KernelEvents::RESPONSE](https://api.drupal.org/api/drupal/vendor%21symfony%21http-kernel%21KernelEvents.php/constant /KernelEvents%3A%3ARESPONSE) và đặt cookie trong tiêu đề phản hồi.
lá cờ cn
@ 4k4: nếu bạn có thể tìm ra bất kỳ điều gì, bạn nên xem xét đăng câu trả lời đó như một câu trả lời. Tôi sẽ thử điều đó ngay hôm nay, nhưng tôi muốn có thể ghi công cho bạn nếu nó hoạt động. ;)
Điểm:0
lá cờ ru

Bạn có thể dùng thử một người đăng ký sự kiện phản hồi sự kiện. Ví dụ: Tạo một tập tin trong CUSTOM_MODULE/src/EventSubscriber/SetSessionCookieSubscriber.php

không gian tên Drupal\CUSTOM_MODULE\EventSubscriber;

sử dụng Symfony\Component\HttpKernel\Event\FilterResponseEvent;
sử dụng Symfony\Thành phần\HttpKernel\KernelEvents;
sử dụng Symfony\Component\EventDispatcher\EventSubscriberInterface;
sử dụng Symfony\Thành phần\HttpFoundation\Request;

lớp SetSessionCookieSubscriber triển khai EventSubscriberInterface {
  chức năng công khai onResponse(FilterResponseEvent $event) {
    /** @var Yêu cầu $request */
    $request = $event->getRequest();
    // Kiểm tra xem đây có phải là yêu cầu đúng không, ví dụ đăng các khía cạnh
    $session = $request->getSession();
    // Kiểm tra giá trị phiên
    $response = $event->getResponse();
    /** Mã tùy chỉnh của bạn ở đây */
    $response->headers->setCookie(cookie mới(...));
  }
  
  hàm tĩnh công khai getSubscribeEvents() {
    $events[KernelEvents::RESPONSE][] = ['onResponse'];
    trả lại sự kiện $;
  }
}

Đăng ký nó trong tập tin dịch vụ của bạn CUSTOM_MODULE.services.yml

dịch vụ:
  CUSTOM_MODULE.setsessioncookie:
  lớp: Drupal\CUSTOM_MODULE\EventSubscriber\SetSessionCookieSubscriber
  thẻ:
    - { tên: event_subscriber }
4uk4 avatar
lá cờ cn
Tôi đã thêm nhận xét của mình vào mã.
Razeem Ahmad avatar
lá cờ ru
Cảm ơn 4K4 đã chỉnh sửa.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.