2011-10-24 6 views
6

estoy escribiendo un observador que comprobar todos los elementos en un orden, en algún momento que consiga los artículos

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

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

pero me da el doble de la misma artículo con el mismo sku, por supuesto, ¿dónde está el truco? tal vez en algún archivo de configuración?

Respuesta

11

Creo que desea utilizar getAllVisibleItems() en lugar de getAllItems().

Creo que getAllItems obtiene la configuración junto con su producto simple asociado.

+0

getAllVisibleItems en Magento 1.8.x funciona bien. ¡Tks! – medina

8

La opción getAllVisibleItems no trabajo

Usted tiene que usar este código

$_items = $order->getItemsCollection(); 

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

'getAllVisibleItems' comprueba internamente que el elemento no tiene un parent_item_id, por lo que si no funciona para usted, algo más está mal. – kojiro

2

Si getAllVisibleItems() no funciona, asegúrese de que está recibiendo correctamente:

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

Fuente : https://stackoverflow.com/a/5512656/922522

Cuestiones relacionadas