正如标题所示,
这是代码......
public function index(Request $request, Application $app)
{
$cookies = $request->cookies;
print_r($request->cookies);
if(!$cookies->has("recordsPerPage"))
{
$response = new Response();
$cookie = new Cookie("recordsPerPage", $app['defaultRecordsPerPage']);
$response->headers->setCookie($cookie);
}
print_r($request->cookies);exit; //prints nothing here !!
}
Run Code Online (Sandbox Code Playgroud)
我也尝试将其设置为$app->after()但失败了.你有没有其他方法来设置除控制器以外的cookie.
谢谢.
Cookie会根据响应进行设置,并可在下次请求时使用.因此,您必须使用此cookie返回响应,如果您希望它在请求中可用,请将其设置为重定向响应,以便浏览器设置cookie并使用此新创建的cookie发出下一个请求:
$cookies = $request->cookies;
if(!$cookies->has("recordsPerPage"))
{
$cookie = new Cookie("recordsPerPage", $app['defaultRecordsPerPage']);
$response = Response::create('', 302, array("Location" => "http://127.0.0.1/whatever/"));
$response->headers->setCookie($cookie);
return $response;
}else{
return print_r($cookies, 1);
}
Run Code Online (Sandbox Code Playgroud)
其他可能性是直接在request($request->cookies->set('recordsPerPage', $app['defaultRecordsPerPage']);)中设置此cookie,但您仍然必须使用此cookie返回响应以在浏览器中设置它.