You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制用户无法向购物车会话添加不同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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:15:07