如何在laravel中设置和获取Cookie

时间:2017-07-20 07:00:07

标签: php laravel cookies laravel-5.3

我想在cookie中设置并获取值,但它不起作用:

    Cookie::queue('online_payment_id', "1", 15);

    $value = Cookie::get('online_payment_id');
    dd($value);

dd()返回null;

我在下面使用但是我得到了这样的信息:

Method cookie does not exist.

    request()->cookie('online_payment_id');

    $value = response()->cookie('online_payment_id', "1", 15);
    dd($value);

10 个答案:

答案 0 :(得分:5)

设置Cookie

 public function setCookie(Request $request){
      $minutes = 60;
      $response = new Response('Set Cookie');
      $response->withCookie(cookie('name', 'MyValue', $minutes));
      return $response;
   }

获取Cookie

   public function getCookie(Request $request){
      $value = $request->cookie('name');
      echo $value;
   }

答案 1 :(得分:5)

在文件顶部添加use Symfony\Component\HttpFoundation\Cookie;或简单use Cookie;

生成Cookie实例

    $cookie = cookie('name', 'value', $minutes);
    return response('Hello World')->cookie($cookie);

从您可以使用请求的请求中检索Cookie请确保在您的方法中使用Request $request

    $value = $request->cookie('name');

答案 2 :(得分:5)

public function setCookie(Request $request) {

    Cookie::queue('name', $request->test, 10);

    return view('home');
 }

Cookie::queue($cookie_name, $data, $life_time_of_this_cookie);

,只需在要显示数据的位置打印cookie。

 {{ Cookie::get('name') }}

答案 3 :(得分:2)

与laravel中的其他所有内容一样,有很多方法可以设置/获取cookie。 cookie将自动添加到传出响应中。

    $value = 1;
    $minutes = 15;
    Cookie::queue($online_payment_id, $value, $minutes);

为了获取cookie,您可以使用

    request()->cookie($online_payment_id);

答案 4 :(得分:2)

即使您仔细地了解Laravel文档中有关如何设置cookie的信息,您也可能会疯狂几个小时(就像我今天所做的那样),因为您根本无法设置cookie!

我终于发现了为什么未设置cookie的原因……在测试代码时,我还使用了var token = JToken.Parse(content); 函数来显示数据。 if (token is JArray) { } else if (token is JValue) { } else if (token is JObject) { } 函数将输出发送到浏览器,该浏览器要求发送标头。 Cookies也必须与标题一起发送,因此,如果您使用dump(),则将永远不会发送Cookie!

我希望这可以帮助其他很有可能遇到这种情况的人。

答案 5 :(得分:0)

有几种方法可以在laravel中设置和获取cookie。

官方文件说Cookies

我通常以这种方式结束

$response = new \Illuminate\Http\Response(view('welcome'));
$response->withCookie(cookie('test_cookie', $request->test_cookie, 45000));
return $response;

您也可以使用CookieJar

参考CookieJar

答案 6 :(得分:0)

显示所有cookie

request()->cookie();

获取特定商品

request()->cookie('itm_name');

设置项目

request()->cookie('item_name', 'item_value', Min_how_long_it_will_alive);

答案 7 :(得分:0)

laravel 8.x

删除cookie:

<块引用>

如果您还没有传出响应的实例,您可以 使用 Cookie 门面的队列方法使 cookie 过期:

use Illuminate\Support\Facades\Cookie;
Cookie::queue(Cookie::forget('name'));

设置:

<块引用>

如果您想确保 cookie 与传出 响应但您还没有该响应的实例,您可以 使用 Cookie 外观来“排队”cookie 以附加到 发送时的响应。 queue 方法接受参数 需要创建一个 cookie 实例。这些 cookie 将附加到 发送到浏览器之前的传出响应:

use Illuminate\Support\Facades\Cookie;

Cookie::queue('name', 'value', $minutes);

答案 8 :(得分:0)

只需初始化即可

设置 Cookie
setcookie('name','value', time)

删除 Cookie
Cookie::forget('name')

答案 9 :(得分:-2)

试试这个:

public function setCookie(Request $request){

 $cookie_name = "user";
 $cookie_value = "value";
 setcookie($cookie_name,$cookie_value, time() + (86400 * 30), "/"); //name,value,time,url

 dd($_COOKIE['user']);

}