如何在laravel中设置和获取Cookie

S.M*_*ian 6 php cookies laravel laravel-5.3

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

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

    $value = Cookie::get('online_payment_id');
    dd($value);
Run Code Online (Sandbox Code Playgroud)

dd()回报null;


我用下面的方式,但我收到了这条消息:

Method cookie does not exist.

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

    $value = response()->cookie('online_payment_id', "1", 15);
    dd($value);
Run Code Online (Sandbox Code Playgroud)

Eri*_*yer 18

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

我终于发现了为什么我的 cookie 没有被设置......我也在dump()测试代码时使用该函数来显示数据。该dump()函数将输出发送到浏览器,这需要发送标头。Cookie 也必须与标头一起发送,因此如果您使用的是dump(),您的 Cookie 将永远不会被发送!

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


Mah*_*joy 16

public function setCookie(Request $request) {

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

    return view('home');
 }
Run Code Online (Sandbox Code Playgroud)

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

并简单地在您想要显示数据的地方打印 cookie。

 {{ Cookie::get('name') }}
Run Code Online (Sandbox Code Playgroud)


Tos*_*kan 10

拉拉维尔 8.x

删除cookie:

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

use Illuminate\Support\Facades\Cookie;
Cookie::queue(Cookie::forget('name'));
Run Code Online (Sandbox Code Playgroud)

放:

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

use Illuminate\Support\Facades\Cookie;

Cookie::queue('name', 'value', $minutes);
Run Code Online (Sandbox Code Playgroud)


sh6*_*210 9

显示所有 cookie

request()->cookie();
Run Code Online (Sandbox Code Playgroud)

获取特定项目

request()->cookie('itm_name');
Run Code Online (Sandbox Code Playgroud)

设置项目

request()->cookie('item_name', 'item_value', Min_how_long_it_will_alive);
Run Code Online (Sandbox Code Playgroud)


gau*_*rav 7

就像 Laravel 中的其他所有东西一样,有很多设置/获取 cookie 的方法。cookie 将自动添加到传出响应中。

    $value = 1;
    $minutes = 15;
    Cookie::queue($online_payment_id, $value, $minutes);
Run Code Online (Sandbox Code Playgroud)

为了获得cookie,您可以使用

    request()->cookie($online_payment_id);
Run Code Online (Sandbox Code Playgroud)


Pra*_*rve 7

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

生成Cookie实例

    $cookie = cookie('name', 'value', $minutes);
    return response('Hello World')->cookie($cookie);
Run Code Online (Sandbox Code Playgroud)

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

    $value = $request->cookie('name');
Run Code Online (Sandbox Code Playgroud)


Har*_*ran 6

设置饼干

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

取得Cookie

   public function getCookie(Request $request){
      $value = $request->cookie('name');
      echo $value;
   }
Run Code Online (Sandbox Code Playgroud)

  • 尝试使用 -> Redirect::to('url')->withCookie($cookiedata); 对于 Laravel 4,redirect('url')->withCookie($cookiedata); Laravel 5 设置带有重定向的 cookie (2认同)

小智 5

Laravel 中有多种设置和获取 Cookie 的方法。

官方文档说Cookie

我通常都是这样结束的

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

您还可以使用CookieJar

参考CookieJar