Symfony 4 删除 cookie

ozo*_*ick 2 symfony

我有一个 cookie 设置代码。

public function checkInviter(int $inviter)
{        
   $response = new RedirectResponse($this->generateUrl('app_homepage'));
   if ($inviter > 0) {
        $response->headers->setCookie(Cookie::create('_inviter_id', $inviter, new \DateTime("+ 30  days")));
        $response->sendHeaders();
    }

    return $response;
Run Code Online (Sandbox Code Playgroud)

}

此外,在注册中我想删除/清除它。如果我创建一个新的响应,那么他不知道 cookie 集。如何使用 cookie?

public function register() {
    $response = new Response();
    dump($response); // cleared Response
    $response->headers->removeCookie('_inviter_id', '/', null);
    $response->send();

    return $this->render('security/register.html.twig');
}
Run Code Online (Sandbox Code Playgroud)

我找到了一些答案,但并不完全准确。

Nic*_*ase 7

您正在重复生成响应:从技术上讲,发送了两种不同的响应,因为您在控制器中生成了一个响应,而 Symfony 在 期间创建了第二个响应$this->render

您应该通过将其设置为第三个参数来重用自己的 Response 对象,render以避免出现问题。完整的代码可能如下所示(重用clearCookie您已经找到的方法):

public function register() {
    $response = new Response();
    $response->headers->clearCookie('_inviter_id', '/', null);

    return $this->render('security/register.html.twig', [], $response);
}
Run Code Online (Sandbox Code Playgroud)