我正在做一个电子商务购物车,我已经使用会话来存储购物车项目。但问题是,当我试图更新(增加或减少)购物车项目的 数量 我没有得到准确的总价,我想更新整个购物车,而不是单品......
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();
}
这应该是在外面 for
循环。
Session::put('cart', $cart);
如果这能解决你的问题,我会很惊讶,但绝对是你需要解决的问题。
我也不明白 echo
在你 for
循环。移除 echo
并试一试。
echo($cart->update($id[$i], $qty[$i]));
$cart->update($id[$id], $qty[$i]);
同时提供 constructor
对于 Cart
问题中的模型将是一个好主意。