laravel 中的会话不保存变量

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

我正在使用 Laravel 制作电子商务网站,我希望任何机构都可以将商品添加到购物车,而不仅仅是验证用户,所以我使用会话来生成 cart_id 变量。

我制作新的中间件来检查会话是否有 cart_id 如果没有则生成新的 uniquid

` 类 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 优化:cleare 但没有任何效果:(

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.