我正在使用 Laravel 制作一个电子商务网站,我希望任何人都可以将商品添加到购物车,而不仅仅是验证用户,因此我使用会话来生成
cart_id
变量。
我制作了新的中间件来检查会话是否有
cart_id
。如果没有,它就生成了一个新的uniquid。
class CartId{
public function handle(Request $request, Closure $next)
{
if(!Session::has('cart_id')) {
$cart_id = uniqid();
Session::put(['cart_id'=>$cart_id]);
Session::save();
}
return $next($request);
}
}
但是当我尝试制作
dd(session()->get('cart_id'))
时,每次刷新我都会得到一个新的ID。为什么?我正在使用这个包:darryldecode/laravelshoppingcart。我尝试过制作 php artisan optimize:clear
但没有成功。
尝试从中间件中删除
Session::save()
行,看看是否可以解决问题:
class CartId
{
public function handle(Request $request, Closure $next)
{
if (!Session::has('cart_id')) {
$cart_id = uniqid();
Session::put('cart_id', $cart_id);
}
return $next($request);
}
}
在此代码中,
Session::put('cart_id', $cart_id);
设置cart_id
会话变量。会话数据将在请求结束时自动保存。