Laravel 中的 Session 不保存变量

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

我正在使用 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
但没有成功。

php laravel session controller laravel-9
1个回答
0
投票

尝试从中间件中删除

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
会话变量。会话数据将在请求结束时自动保存。

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