加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:43:58 所属栏目:PHP教程 来源:网络整理
导读:正如标题所示, 这是代码…… public function index(Request $request,Application $app){ $cookies = $request-cookies; print_r($request-cookies); if(!$cookies-has("recordsPerPage")) { $response = new Response(); $cookie = new Cookie("recordsPer
正如标题所示,

这是代码……

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->之后设置它()但是失败了.你有没有其他方法来设置除控制器以外的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);
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读