【问题标题】:Laravel 5.1 Cookie IssueLaravel 5.1 Cookie 问题
【发布时间】:2015-09-17 14:37:34
【问题描述】:

我正在尝试在加载视图时设置 cookie:

 $cookie = Cookie::make('mycookie', $myval, 43200);
 $view = view('myview')->with($data);
 return Response::make($view)->withCookie($cookie);

并在以后的请求中读取 cookie:

if (Cookie::has('mycookie')) {
   //do something
}

cookie 永远不会被设置...我哪里出错了?

【问题讨论】:

    标签: php laravel cookies laravel-5


    【解决方案1】:

    你可以像下面这样创建cookie

    $view = view('myview')->with($data);
    
    $response = new Illuminate\Http\Response($view);
    
    return $response->withCookie(cookie('name', 'value', $minutes));
    

    或者你可以像下面这样排队 cookie,它将与下一个请求一起发送,

    Cookie::queue('name', 'value');
    
    return response('Hello World');
    

    Read More

    【讨论】:

    • 这给出了错误:在类 Illuminate\Http\Response 中找不到方法 'withCookie'
    • Cookie::queue('mycookie', $myval, 43200); $view = view('myview')->with($data);返回响应($视图);也不行。没有错误但没有 cookie。
    • 你可以试试 'sudo chmod 777 -R storage' ,然后清除浏览器缓存吗?
    • 这正是我的问题。我正在返回一个带有数据的视图。您需要将“响应”对象返回给“请求”,以便 withCookie() 方法起作用。谢谢!
    【解决方案2】:

    缺少 cookie 问题的一个可能原因是,如果您的 Blade 指令无效,页面将正常显示,但不会保留任何 cookie 设置。

    我遇到了这个问题,因为我在刀片模板中包含了@script,而不是@section('script')

    我怀疑设置 cookie 的原因是 bad 指令在编译的 php 代码中导致视图被缓存的错误,因此在传输 cookie 之前处理崩溃。

    【讨论】:

      【解决方案3】:

      这可以用 Laravel 可靠地设置一个 cookie:

       use Illuminate\Http\Request;
       use Illuminate\Contracts\Cookie\Factory;
      
          class MyClass
          {
      
              public function handle(Request $request, Factory $cookie)
              {
                  $cookie->queue($cookie->make('myCookie', $request->someVal, 129600));
                  return redirect('/myPage');
              }
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-07
        • 1970-01-01
        相关资源
        最近更新 更多