首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento $2->getAllItems();不能正常工作

Magento $2->getAllItems();不能正常工作
EN

Stack Overflow用户
提问于 2022-01-24 16:42:25
回答 1查看 1.6K关注 0票数 0

试着在售后过程中抓住报价项目,效果很好。但是当报价不是默认的网站时,请求是空的。为什么?谢谢!这是代码:

代码语言:javascript
复制
  $orderId = 123;
  $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
  $quoteToOrder = $objectManager->create('Magento\Quote\Model\Quote\Item\ToOrderItem');
  $order = $objectManager->create('Magento\Sales\Model\Order')->load($orderId);
  $quote = $objectManager->create('\Magento\Quote\Model\Quote')->load($order->getQuoteId());

  $items = $quote->getAllItems();

  foreach ($items as $quoteItem) ...

这不是结账或购物车的延伸,而是一个售后过程,在订单通过cron发货之前就开始了。

EN

回答 1

Stack Overflow用户

发布于 2022-01-26 02:06:21

在Magento2.0中,Magento_Checkout和Magento_Quote中的服务契约还没有提供必要的方法,所以我们使用了cart模型。在您的插件中,按如下方式注入:

代码语言:javascript
复制
public function __construct(\Magento\Checkout\Model\Cart $cart)
{
    $this->cart = $cart;
}

现在您可以访问购物车了,您可以通过几种方式检索这些项,这与Magento 1中的基本相同:

$this->cart->getQuote()->getItemsCollection()

返回带有与当前引号关联的所有项的引用项集合。

$this->cart->getItems()

这是上述方法的快捷方式,但如果没有引号,则返回一个空数组,因此不能依赖于获取集合实例。

$this->cart->getQuote()->getAllItems()

加载项集合,然后返回未标记为已删除(即已在当前请求中删除)的所有项的数组。

$this->cart->getQuote()->getAllVisibleItems()

加载项集合,然后返回未标记为已删除且没有父项的所有项的数组(即获得绑定和可配置产品的项,而不是其关联的子项)。每个数组项对应于购物车页上显示的行。

选择最适合你的需求。在大多数情况下,最后一种方法是您所需要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70837346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档