Symfony cookie 在重定向后被删除

Symfony cookie is deleted after redirection

我知道有一些关于此的主题,但我知道我做错了什么。

我设置cookie的函数是

public function createCookie($city)
{
    $expire = time() + (3600 * 24 * 90);
    $cookie = new Cookie('calendar_dev_city', $city, $expire, '/', 'cal.dev', false, false);

    $response = new Response();
    $response->headers->setCookie($cookie);
    $response->sendHeaders();
}

如果我在这个函数的末尾转储 headers,我可以看到 cookie 已设置,但在重定向后它就消失了。

您必须 return 在控制器操作中 Response

<?php
// ...
public function pageAction() {
  $response = Response::create();
  $cookie = $this->makeCookie();
  $response->headers->setCookie($cookie);

  $response->setContent('thank you for setting the cookie!');

  return $response;
}

private function makeCookie() {
  $cookie = new Cookie(/* */);
  return $cookie;
}