![](/img/trans.png)
[英]Add to cart pop up when specific items are added to cart (cs-cart)
[英]Delete items on hand when added to cart with Laravel
我正在建立一個小型電子商務網站,並希望能夠在某人的購物車中添加或刪除商品時更新手頭的庫存。 在我的購物車 controller 中,我有四個功能:一個添加項目,一個增加項目,一個減少項目,一個刪除項目。 這是代碼:
public function addItemToCart(Request $request, $id) {
$prevCart = $request->session()->get('cart');
$cart = new Cart($prevCart);
$product = Product::find($id);
$cart->addItem($id, $product);
$request->session()->put('cart', $cart);
return redirect()->route("home");
}
public function increaseSingleProduct(Request $request, $id) {
$prevCart = $request->session()->get('cart');
$cart = new Cart($prevCart);
$product = Product::find($id);
$cart->addItem($id, $product);
$request->session()->put('cart', $cart);
return redirect()->back();
}
public function decreaseSingleProduct(Request $request, $id) {
$prevCart = $request->session()->get('cart');
$cart = new Cart($prevCart);
if( $cart->items[$id]['quantity'] > 1) {
$product = Product::find($id);
$cart->items[$id]['quantity'] = $cart->items[$id]['quantity']-1;
$cart->items[$id]['totalSinglePrice'] = $cart->items[$id]['quantity'] * $product['price'];
$cart->updatePriceAndQunatity();
$request->session()->put('cart', $cart);
}
return redirect()->back();
}
public function deleteItemFromCart(Request $request, $id) {
$cart = Session::get('cart');
if(array_key_exists($id, $cart->items)){
unset($cart->items[$id]);
}
$prevCart = $request->session()->get("cart");
$updatedCart = new Cart($prevCart);
$updatedCart->updatePriceAndQunatity();
$request->session()->put("cart",$updatedCart);
return redirect()->route('shopping cart');
}
這里的數量不是指手頭的數量,是指購物車中的數量。 在產品表中,我有一個名為 stock_quantity 的列。 理想情況下,這是我希望在執行每個 function 時更新的內容。
我可能沒有得到你問題的復雜性。 你不只需要找到產品並增加或減少嗎?
$product = Product::findOrFail($item_id);
$product->stock_quantity++; // or --
$product->save();
不過,當您添加到購物車時,我不會這樣做。 我會在結賬時這樣做,這樣您就不會將庫存留在廢棄的購物車中。 或者,如果您確實需要在有人在購物車中有東西時提交您的庫存,請實施 function 以刪除已放棄的已提交庫存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.