我想在 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);
设置 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;
}
即使您仔细遵循 Laravel 文档中有关如何设置 cookie 的信息,您也可能会疯狂几个小时(就像我今天所做的那样),因为您就是无法设置 cookie!
我终于发现为什么我的 cookie 没有被设置...我在测试代码时还使用
dump()
函数来显示数据。 dump()
函数将输出发送到浏览器,这需要发送标头。 Cookie 还必须与标头一起发送,因此如果您使用 dump()
,您的 Cookie 将永远不会被发送!
我希望这可以帮助其他很可能遇到这种情况的人。
在文件顶部添加
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');
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);
显示所有cookies
request()->cookie();
获取特定物品
request()->cookie('itm_name');
设置项目
request()->cookie('item_name', 'item_value', Min_how_long_it_will_alive);
与 Laravel 中的其他所有内容一样,设置/获取 Cookie 的方法有很多种。 cookie 将自动添加到传出响应中。
$value = 1;
$minutes = 15;
Cookie::queue($online_payment_id, $value, $minutes);
为了获取 cookie,您可以使用
request()->cookie($online_payment_id);
只需初始化即可
设置Cookie
setcookie('名称','值',时间)
删除Cookie
Cookie::忘记('名字')
我刚刚发送了带有响应的cookie,
$token= User::createUserToken($user);
$minutes = 15;
//dd([request()->cookie('token')]);
return response()->json(['status'=>'200','success'=>'User Registered.'])->withCookie(cookie('token', $token, $minutes));;
}
试试这个:
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']);
}