如何在laravel中设置和获取Cookie

问题描述 投票:0回答:10

我想在 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);
php laravel cookies laravel-5.3
10个回答
48
投票

设置 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;
   }

31
投票

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

我终于发现为什么我的 cookie 没有被设置...我在测试代码时还使用

dump()
函数来显示数据。
dump()
函数将输出发送到浏览器,这需要发送标头。 Cookie 还必须与标头一起发送,因此如果您使用
dump()
,您的 Cookie 将永远不会被发送!

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


12
投票

在文件顶部添加

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

10
投票

laravel 8.x

删除cookie:

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

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

套装:

如果您想确保 cookie 随传出信息一起发送 响应,但您还没有该响应的实例,您可以 使用 Cookie 门面对 cookie 进行“排队”以附加到 发送时的响应。队列方法接受参数 创建 cookie 实例时需要。这些 cookie 将附加到 发送到浏览器之前的传出响应:

use Illuminate\Support\Facades\Cookie;

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

9
投票

显示所有cookies

request()->cookie();

获取特定物品

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

设置项目

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

8
投票

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

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

为了获取 cookie,您可以使用

    request()->cookie($online_payment_id);

5
投票

laravel 中有多种设置和获取 cookie 的方法。

官方文档说Cookies

我通常都是这样结束的

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

您还可以使用

CookieJar

参考CookieJar


1
投票

只需初始化即可

设置Cookie
setcookie('名称','值',时间)

删除Cookie
Cookie::忘记('名字')


0
投票

我刚刚发送了带有响应的cookie,

$token= User::createUserToken($user);
                     $minutes = 15;
                     //dd([request()->cookie('token')]);
                     return response()->json(['status'=>'200','success'=>'User Registered.'])->withCookie(cookie('token', $token, $minutes));;
                 }

-7
投票

试试这个:

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']);

}
© www.soinside.com 2019 - 2024. All rights reserved.