【问题标题】:how to update session data in Laravel (session cart)如何在 Laravel 中更新会话数据(会话购物车)
【发布时间】:2020-06-11 10:05:44
【问题描述】:

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

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

    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();
    }

购物车

cart image in browser

【问题讨论】:

    标签: shopping-cart laravel-7 laravel-session


    【解决方案1】:

    这应该在for 循环之外。

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

    如果这解决了您的问题,但绝对是您需要解决的问题,我会感到惊讶。

    另外,我不理解您的 for 循环中的 echo 部分。删除echo 并尝试一下。

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

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

    【讨论】:

    • 感谢您的回答.. 我已经解决了问题.. 顺便说一句,我正在检查我的 Cart 模型通过在 for 循环中执行 echo 来返回什么。我忘了从问题中删除它
    • 发布您如何解决您的问题以及问题的具体内容。对其他人会有所帮助。
    • 下次我会记住的。顺便说一句,我面临的问题(如问题中所述)无论我试图更新购物车项目,购物车项目的总价格不是显示准确...我通过删除购物车并创建一个更新了购物车项目数量的新购物车来解决它。
    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多