你如何在Silex中设置和获取cookie?

时间:2013-01-27 13:59:29

标签: php silex

如标题所示,

这是代码......

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 !!
}

我也尝试将其设置为$app->after()但失败了。除了控制器之外,你有没有其他方法来设置cookie。

谢谢。

1 个答案:

答案 0 :(得分:7)

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);
}

其他可能性是直接在请求中设置此cookie($request->cookies->set('recordsPerPage', $app['defaultRecordsPerPage']);),但您仍然必须使用此cookie返回响应以在浏览器中设置它。

相关问题