【问题标题】:Add associated products to quote but not cart将相关产品添加到报价单但不添加到购物车
【发布时间】:2014-10-28 20:52:11
【问题描述】:

我在 Magento 中创建了一个新的产品类型。但是,我很难将其所有相关产品添加到 sales_flat_quote_item 表中。我只想将关联产品添加到表格中,并且只有主要父产品在购物车中可见。

我真的很接近实现这一目标。现在,将其添加到购物车时,购物车中只有父项目可见。但是,上面提到的表格中只列出了它的一个相关产品。

这是我的代码的 sn-p:

class Namespace_Module_Model_Product_Type_Custom extends Mage_Catalog_Model_Product_Type_Abstract {
........

    protected function _prepareProduct(Varien_Object $buyRequest, $product, $processMode)
{
    $qty = $buyRequest['qty'];
    $associatedQty = $buyRequest['associated_qty'];

    if($qty >= 1) {
        $result = parent::_prepareProduct($buyRequest, $product, $processMode);
        if (is_array($result)) {
            $product = $this->getProduct($product);

            foreach($buyRequest['associated'] as $associated){
                if($associated){
                    $subProducts[] = Mage::getModel('catalog/product')->load($associated);
                }
            }

            foreach($subProducts as $subProduct){
                if($subProduct){
                    $product->setCartQty($qty);
                    $product->addCustomOption('product_qty_'.$subProduct->getId(), $associatedQty[$subProduct->getId()], $subProduct);

                    $product->addCustomOption('associated_product_' . $subProduct->getId(), $associatedQty[$subProduct->getId()]);

                }
            }

                    $_result = $subProduct->getTypeInstance(true)->_prepareProduct(
                        $buyRequest,
                        $subProduct,
                        $processMode
                    );

            if (!isset($_result[0])) {
                return Mage::helper('checkout')->__('Cannot add the item to shopping cart');
            }

            $_result[0]->setParentProductId($product->getId())
                ->addCustomOption('parent_product_id', $product->getId());

            $result[] = $_result[0];
            return $result;

        } else {
            return $this->getSpecifyOptionMessage();
        }
    } else {
        return $this->getQtyMessage();
    }
}

........
}

目前只有关联产品“53”被添加为子产品。我仍然想念另外两个。基本上,foreach($subProducts as $subProduct) 循环将与三个相关产品循环 3 次。我假设在 Magento 的某个地方,它只使用最后一个循环的产品。

对此的任何建议或帮助都会很棒。提前致谢!

【问题讨论】:

    标签: magento cart


    【解决方案1】:

    想通了。我只需要将以下内容转移到 foreach 循环中,而不是在它之外。

    $_result[0]->setParentProductId($product->getId())
               ->addCustomOption('parent_product_id', $product->getId());
    
    $result[] = $_result[0];
    

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多