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

问题描述 投票:0回答:3

我正在编写一个观察者来检查订单中的每个项目,在某个时候我会得到这些项目

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

但是我当然得到了两次具有相同 sku 的相同商品,问题在哪里?也许在某些配置文件中?

php magento observer-pattern
3个回答
17
投票

我相信您想使用

getAllVisibleItems()
而不是
getAllItems()

我相信 getAllItems 可以获得可配置及其关联的简单产品。


9
投票

选项

getAllVisibleItems
不起作用

您必须使用此代码

$_items = $order->getItemsCollection();

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

2
投票

如果

getAllVisibleItems()
不起作用,请确保您正确获取:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.