Ошибка в куками в php(Symfony)
Дело обстоит так.
$cookie = new Cookie('nameCookie',
'ValueCookies',
strtotime("+1 day")
);
$response = new Response();
$response->headers->setCookie($cookie);
$response->send();
и после этого у меня дальнейшие действия не выполняются. Даже шаблон не рендерится((( а вот и ошибка что пишется в консоли.
|CRITI| REQUES Uncaught PHP Exception RuntimeException:
"Failed to start the session because headers have already been sent by "" at line 0." at
/home/pc/dev_/bibi/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php line 152
а это уже конд в symfony на который ссылается ошибка
if (filter_var(ini_get('session.use_cookies'), FILTER_VALIDATE_BOOLEAN) && headers_sent($file, $line)) {
throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
}
public function SocNetwork($socNetwork, Request $request)
{
$cookie = new Cookie('socNetCookie',
$socNetwork,
strtotime("+1 day")
);
$response = new Response();
$response->headers->setCookie($cookie);
$response->send();
dump($response);
return $this->render('home/index.html.twig');
}
Ответы (1 шт):
Автор решения: Sonny Milton
→ Ссылка
$response->send() возвращает ответ. $this->render('home/index.html.twig') тоже автоматически генерирует ответ и он возвращается из контроллера. Из-за этого возникает ошибка, т.к. заголовки ответа уже были отправлены.
Изменить поведение, при котором метод render генерирует свой Response можно передав ему объект класса Response в качестве третьего аргумента.
Код action можно изменить так:
public function SocNetwork($socNetwork, Request $request)
{
$cookie = new Cookie(
'socNetCookie',
$socNetwork,
strtotime("+1 day")
);
$response = new Response();
$response->headers->setCookie($cookie);
return $this->render('home/index.html.twig', [], $response);
}