如何限制用户无法向购物车会话添加不同sponsor_id店铺的商品
代码修改方案
核心实现逻辑如下:
- 先获取待添加商品的
sponsor_id - 校验当前购物车是否为空:
- 若购物车不为空,提取已有商品的
sponsor_id和待添加商品的sponsor_id对比 - 若两者不一致,直接返回错误提示,终止加购操作
- 若购物车不为空,提取已有商品的
- 校验通过后再执行原有加购逻辑
修改后完整代码:
public function addToCart(Request $request, $id) { $cart = session("cart"); $produk = Produk::detail_produk($id); $currentSponsorId = $produk->sponsor_id; // 新增sponsor_id校验逻辑 if (!empty($cart)) { // 取购物车中第一个商品的sponsor_id(历史限制逻辑保证所有商品sponsor_id一致) $existingSponsorId = reset($cart)['sponsor_id']; if ($existingSponsorId != $currentSponsorId) { return redirect()->back()->with('error', '当前购物车存在其他主办方的商品,请完成当前订单后再添加新商品'); } } if (isset($cart[$id])) { $cart[$id]["qty"]++; session()->put('cart', $cart); } else { $cart[$id] = [ "sponsor_id" => $produk->sponsor_id, "nama_produk" => $produk->nama_produk, "harga_produk" => $produk->harga_produk, "berat" => $produk->berat, "gambar" => $produk->gambar, "qty" => $request->qty ]; } session(["cart" => $cart]); return redirect()->back()->with('success', 'Produk Berhasil dimasukkan ke keranjang !!'); }
注:需要在前端页面新增
error类型消息的展示逻辑,用于向用户传递校验失败的提示。
内容的提问来源于stack exchange,提问作者Muzakir Nur
相关产品推荐
相关产品推荐

