2011-10-24 2 views
6

어떤 점에서 모든 항목을 순서대로 확인하는 관찰자를 쓰고 있습니다.

 foreach($order->getAllItems() as $item){ 
    //do something 
    echo $item->getSku(); 
    } 

    //output 
    sku-first 
    sku-first 
    sku-second 
    sku-second 

하지만 동일한 스키를 가진 동일한 항목을 두 번 얻습니다. catch는 어디에 있습니까? 어쩌면 일부 구성 파일에?

답변

11

getAllItems() 대신 getAllVisibleItems()을 사용하고 싶습니다.

getAllItems는 연관된 간단한 제품과 함께 구성 가능하다고 생각합니다.

$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$cartItems = $quote->getAllVisibleItems(); 
foreach ($cartItems as $item) { 
    echo $item->getQty(); 
} 

출처 :

+0

Magento 1.8.x에서 getAllVisibleItems 잘 작동합니다. Tks! – medina

8

옵션 getAllVisibleItems 당신은 당신이 제대로 받고 있는지 확인

$_items = $order->getItemsCollection(); 

foreach ($_items as $item) { 
    if ($item->getParentItem()) continue; 
    //do something 
    echo $item->getSku(); 
} 
+0

'getAllVisibleItems'는 내부적으로 항목에 parent_item_id가 없다는 것을 내부적으로 검사합니다. 따라서 그것이 작동하지 않으면 다른 것이 잘못되었습니다. – kojiro

관련 문제