【发布时间】: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 的某个地方,它只使用最后一个循环的产品。
对此的任何建议或帮助都会很棒。提前致谢!
【问题讨论】: