magento $ order-> getAllItems()返回相同项目的两倍

时间:2011-10-24 14:54:32

标签: php magento observer-pattern

我正在写一个观察员,检查订单中的每个项目,在某些时候我得到了项目

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

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

但是我当然得到两个相同的项目同样的sku当然是捕获?也许在一些配置文件中?

3 个答案:

答案 0 :(得分:14)

我相信你想使用getAllVisibleItems()代替getAllItems()

我相信getAllItems可以与其相关的简单产品一起配置。

答案 1 :(得分:9)

选项getAllVisibleItems不起作用

您必须使用此代码

$_items = $order->getItemsCollection();

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

答案 2 :(得分:2)

如果getAllVisibleItems()无效,请确保您正确使用

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

来源:https://stackoverflow.com/a/5512656/922522