如何在Laravel中更新会话数据(会话车)

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

我正在做一个电子商务购物车,我已经使用会话来存储购物车项目。但问题是,当我试图更新(增加或减少)购物车项目的 数量 我没有得到准确的总价,我想更新整个购物车,而不是单品......

这是购物车模型中的更新功能

    public function update($id, $qty){
        //reset qty and price in the cart
        $this->totalQty -= $this->items[$id]['qty'];
        $this->totalPrice -= $this->items[$id]['price'] * $this->items[$id]['qty'];

        //add item with new qty
        $this->items[$id]['qty'] = $qty;

        //total price and total qty in cart
        $this->totalQty += $qty;
        $this->totalPrice += $this->items[$id]['price'] * $qty;
    }

这是控制器的更新功能

    //update cart
    public function updateQty(Request $request){
        $id = $request->item_id;
        $qty = $request->qty;

        $oldCart = Session::has('cart') ? Session::get('cart') : null;

        $cart = new Cart($oldCart);

        for ($i=0; $i <count($id) ; $i++) { 
            $cart->update($id[$i], $qty[$i]);
            Session::put('cart', $cart);
        }


        return redirect()->back();
    }

小车

浏览器中的购物车图片

shopping-cart laravel-7 laravel-session
1个回答
0
投票

这应该是在外面 for 循环。

Session::put('cart', $cart);

如果这能解决你的问题,我会很惊讶,但绝对是你需要解决的问题。

我也不明白 echo 在你 for 循环。移除 echo 并试一试。

echo($cart->update($id[$i], $qty[$i]));
$cart->update($id[$id], $qty[$i]);

同时提供 constructor 对于 Cart 问题中的模型将是一个好主意。

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