Drupal 8使用事件订阅者在每个页面加载时设置cookie

时间:2019-04-23 21:00:39

标签: php cookies drupal-8

我试图在每次页面加载时设置一个cookie。我做了一些研究,发现事件订阅者是必经之路。 我用事件创建了一个自定义模块。它在每次页面加载时启动事件,但问题出在Cookie上。

$ event对象具有称为response的属性,但始终为null。 因此,我无法设置任何cookie。

 class LanguageCookieSubscriber implements EventSubscriberInterface 
 {

    protected $event;

    protected $cookieValue;

    public function init(GetResponseEvent $event) {

      $this->event = $event;

      $cookie = new Cookie("client_language_cookie", $this->cookieValue, 0, '/', NULL, FALSE);

      $this->event->getResponse()->headers->setCookie($cookie);
   }
 }

我也尝试设置响应对象。然后,我可以设置cookie,但是页面将​​变为空白。

  $response = new Response();
  $this->event->setResponse($response);
  $cookie = new Cookie("client_language_cookie", $this->cookieValue, 0, '/', NULL, FALSE);
  $this->event->getResponse()->headers->setCookie($cookie);

任何想法我该如何解决?我需要显示用户请求的页面,并且只设置cookie。

谢谢。

0 个答案:

没有答案