2013-08-02 38 views
8

我试图加载已添加到客户购物车中的简单产品,但是当我检索这些项目时,它显示了父配置。从购物车配置中获取简单产品

$cart = Mage::getSingleton('checkout/cart'); 
$productIds = array(); 

foreach ($cart->getQuote()->getAllVisibleItems() as $item) { 
    $productIds[] = $item->getProduct()->getId(); 
} 

var_dump($productIds); 

例如,当我向购物车中添加小,中,大时,这将返回所有相同的可配置ID。我怎样才能获得个人简单的产品?我试图检索在简单产品级别上设置的属性值。

回答

16

考虑看看如何Magento呈现结帐/车页面上您的购物车中的项目后,我能找到这app/code/core/Mage/Checkout/Block/Cart/Item/Renderer/Configurable.php

/** 
* Get item configurable child product 
* 
* @return Mage_Catalog_Model_Product 
*/ 
public function getChildProduct() 
{ 
    if ($option = $this->getItem()->getOptionByCode('simple_product')) { 
     return $option->getProduct(); 
    } 
    return $this->getProduct(); 
} 

所以,在这个问题把它应用到的片段,这将是

foreach ($cart->getQuote()->getAllVisibleItems() as $item) { 
    $productId = $item->getProduct()->getId(); 
    if ($option = $item->getOptionByCode('simple_product')) { 
     $productId = $option->getProduct()->getId(); 
    } 
    $productIds[] = $productId; 
} 
+11

对于其他人:一个行代码:$ _item-> getOptionByCode( 'simple_product') - > getProduct() - >的getId(); –

相关问题