我有一个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;
}
在注册中,我想删除/清除它。如果我创建一个新的响应,那么他不知道设置的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');
}
我找到了一些答案,但这并不完全准确。
您正在复制响应的生成:从技术上讲,发出了两个不同的响应,因为您在控制器中生成了一个响应,而Symfony在期间创建了第二个响应$this->render
。
您应该通过将其设置为第三个参数render
来重用自己的Response对象,以避免出现问题。完整的代码可能如下所示(重新使用clearCookie
您已经找到的方法):
public function register() {
$response = new Response();
$response->headers->clearCookie('_inviter_id', '/', null);
return $this->render('security/register.html.twig', [], $response);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句