【问题标题】:How do you set and get cookies in Silex?如何在 Silex 中设置和获取 cookie?
【发布时间】:2013-02-14 07:41:47
【问题描述】:

正如标题所示,

这是代码...

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 之外,您还有其他方法吗?

谢谢。

【问题讨论】:

  • 我不知道为什么它被否决了!!!我试过thisthisthis。有人说你需要得到它$response->headers->getCookies() 有人说你需要从$request->cookies 得到它。我都试过了。

标签: php silex


【解决方案1】:

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 返回响应才能在浏览器中设置它。

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2017-12-25
    • 2017-02-04
    • 2018-09-21
    • 2018-04-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多