我有一个 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)
我找到了一些答案,但并不完全准确。
您正在重复生成响应:从技术上讲,发送了两种不同的响应,因为您在控制器中生成了一个响应,而 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)
| 归档时间: |
|
| 查看次数: |
9375 次 |
| 最近记录: |