2013-08-02 35 views
8

Tôi đang cố tải các sản phẩm đơn giản đã được thêm vào giỏ hàng của khách hàng, nhưng khi tôi truy xuất các mục, nó hiển thị cấu hình gốc.Lấy sản phẩm đơn giản từ cấu hình trong giỏ

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

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

var_dump($productIds); 

Ví dụ: điều này sẽ trả lại tất cả id có thể định cấu hình tương tự khi tôi thêm một nhỏ, vừa và lớn vào giỏ hàng. Làm thế nào tôi có thể nhận được các sản phẩm đơn giản? Tôi đang cố truy xuất giá trị thuộc tính được đặt ở cấp sản phẩm đơn giản.

Trả lời

16

Sau khi xem xét cách Magento làm cho các mục trong giỏ hàng của bạn trên trang thanh toán/giỏ, tôi đã có thể tìm thấy điều này trong 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(); 
} 

Vì vậy, việc áp dụng nó vào đoạn trong câu hỏi, nó sẽ là

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

Đối với những người khác: Một dòng mã: $ _item-> getOptionByCode ('simple_product') -> getProduct() -> getId(); –

Các vấn đề liên quan