【问题标题】:magento $order->getAllItems() return twice the same itemmagento $order->getAllItems() 返回两次相同的项目
【发布时间】:2011-12-14 05:19:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php magento observer-pattern


    【解决方案1】:

    我相信您想使用getAllVisibleItems() 而不是getAllItems()

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

    【讨论】:

    • Magento 1.8.x 上的 getAllVisibleItems 工作正常。谢了!
    • 这在 2.2.4 上对我不起作用,但 if ($item->getParentItem()) continue; 起作用了!
    【解决方案2】:

    getAllVisibleItems 选项不起作用

    您必须使用此代码

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

    【讨论】:

    • getAllVisibleItems 在内部检查该项目没有 parent_item_id,因此如果它不适合您,则说明其他问题。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 2015-05-05
      • 2020-04-10
      • 2016-06-29
      • 2016-01-18
      • 1970-01-01
      • 2020-01-11
      相关资源
      最近更新 更多