如何使用户无法从不同商店将产品添加到购物车会话?

Posted

技术标签:

【中文标题】如何使用户无法从不同商店将产品添加到购物车会话?【英文标题】:How to make users cannot add product to cart session from different store? 【发布时间】:2022-01-02 07:13:43 【问题描述】:

所以,我想做出 if else 语句,如果 $cart 会话具有不同的 sponsor_id 值,则用户无法从另一个 sponsor_id 添加产品

这是我的CartController

public function addToCart(Request $request, $id)

    $cart = session("cart");
    $produk = Produk::detail_produk($id);

    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 !!');

因此,用户必须先完成交易,然后才能将另一个 sponsor_id 的产品添加到购物车

【问题讨论】:

【参考方案1】:

我认为这段代码会通过循环遍历之前的产品数据来做到这一点。

public function addToCart(Request $request, $id)

    $cart = session("cart");
    $produk = Produk::detail_produk($id);

    if (isset($cart[$id])) 
        $cart[$id]["qty"]++;
        session()->put('cart', $cart);
     else 
        $num = count($cart);
        if($num > 0)
          $this_sponsor_id = $produk->sponsor_id;
          foreach($cart as $produk_id => $produk_data)
            if($produk_data->sponsor_id != $this_sponsor_id)
              return false;
            
          
        
        $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 !!');

我还想也许您可以将这些物品存储在单独的购物车中,按赞助商 ID 分组。然后,您可以在结帐时为正确的收费 - 单独收费。

public function addToCart(Request $request, $id)

    $newcart  = session("cart");
    $produk = Produk::detail_produk($id);
    $newcart = session("newcart");
    if(!isset($newcart[$produk->sponsor_id]))
      $newcart[$produk->sponsor_id] = [];
    
    if(isset($newcart[$produk->sponsor_id][$id]))
      $newcart[$produk->sponsor_id][$id]["qty"]++;
      session()->put('newcart', $newcart);
     else 
      $newcart[$produk->sponsor_id][$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(["newcart" => $newcart]);
    return redirect()->back()->with('success', 'Produk Berhasil dimasukkan ke keranjang !!');

【讨论】:

我的情况需要一点改变,但它可以工作。谢谢 很高兴能够提供帮助!【参考方案2】:

我的情况变化不大。以防有人和我有同样的问题

public function addToCart(Request $request, $id)

    $cart = session("cart");
    $produk = Produk::detail_produk($id);
    $num = count(array($cart));
    if (isset($cart[$id])) 
        $cart[$id]["qty"]++;
        session()->put("cart", $cart);
     else 
        if ($num > 0) 
            $this_sponsor_id = $produk->sponsor_id;
            foreach ($cart as $produk_id => $produk_data) 
                if ($produk_data["sponsor_id"] != $this_sponsor_id) 
                    return redirect()->back()->with('error', 'Bersihkan Keranjang sebelum Membeli dari Booth Lain');
                
            
        
        $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
        ];
    
    // dd($cart);
    session(["cart" => $cart]);
    return redirect()->back()->with('success', 'Produk Berhasil dimasukkan ke keranjang !!');

【讨论】:

以上是关于如何使用户无法从不同商店将产品添加到购物车会话?的主要内容,如果未能解决你的问题,请参考以下文章

在 zen 购物车中添加商店名称以及产品

如何将会话变量连接到 Django 中的登录用户?

在 magento 中更改运费计算

将产品添加到购物车 jQuery/Ajax/Symfony/Twig

使用复选框将数量添加到购物车

WordPress将会话数据从产品页面带到自定义插件中的购物车页面?