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

Magento中Group Product关联单品无法单独加入购物车的求助

解决Magento分组商品单个加购按钮同时加入多个商品的问题

我帮你分析下问题出在哪,以及怎么修复:

问题根源

你当前的代码里,每个关联商品的加购表单输入框用了super_group[<?= $_item->getId() ?>]作为name属性——这是Magento分组商品批量加购的专属字段标识。当你点击任意一个Add to Cart按钮时,浏览器会自动收集页面上所有带super_group前缀的输入框值一起提交,所以才会出现点击第一个按钮,两个商品同时被加入购物车的情况。

修复方案

我们需要把每个关联商品的加购逻辑改成普通Simple商品的独立加购模式,具体调整如下:

1. 修改表单核心代码

替换你原代码中<div class="control qty">内部的内容,改成下面的代码:

<div class="control qty">
    <?php 
    // 获取单个商品的加购地址
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
    $listBlock = $objectManager->get('\Magento\Catalog\Block\Product\ListProduct'); 
    $addToCartUrl = $listBlock->getAddToCartUrl($_item); 
    ?>
    <form data-role="tocart-form" action="<?= $block->escapeUrl($addToCartUrl) ?>" method="post">
        <?= $block->getBlockHtml('formkey')?>
        <input type="number" 
               name="qty" 
               data-selector="qty" 
               value="<?= /* @escapeNotVerified */ $_item->getQty() * 1 ?>" 
               title="<?= /* @escapeNotVerified */ __('Qty') ?>" 
               class="input-text qty" 
               data-validate="{'validate-number':true, 'validate-greater-than-zero':true}"
               data-errors-message-box="#validation-message-box"/>
        <button type="submit" title="<?= $block->escapeHtml(__('Add to Cart')) ?>" class="addtocart">
            <?= $block->escapeHtml(__('Add to Cart')) ?>
        </button>
    </form>
</div>

2. 移除重复的商品加载逻辑

你代码里同时加载了两次关联商品数据:

<?php $_associatedProducts = $block->getAssociatedProducts(); ?>
<?php $grouped = $_product->load($_product->getId()); ?>
<?php $associatedProducts = $grouped->getTypeInstance()->getAssociatedProducts($grouped); ?>

建议保留第一行,然后把循环的foreach ($associatedProducts as $_item):改成foreach ($_associatedProducts as $_item):,避免重复查询数据库,提升页面性能。

3. 清理无用代码

你原代码里有一个被注释掉的额外加购按钮单元格,可以直接删掉这个<td class="addtocart">的整个区块,减少冗余代码。

修复原理

  • 把输入框name从super_group[item_id]改成qty:这是普通商品加购的标准字段,只会提交当前表单的数量值,不会影响其他商品
  • 使用单个商品的专属加购地址:确保表单提交时只处理当前关联商品的加购请求
  • 替换验证规则:用普通商品的数量验证规则替代分组商品的批量验证,确保输入的数量合法

这样修改后,点击每个单品的Add to Cart按钮,就只会把对应的单个商品加入购物车了。

内容的提问来源于stack exchange,提问作者shweta mudgil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:38:09