试着在售后过程中抓住报价项目,效果很好。但是当报价不是默认的网站时,请求是空的。为什么?谢谢!这是代码:
$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发货之前就开始了。
发布于 2022-01-26 02:06:21
在Magento2.0中,Magento_Checkout和Magento_Quote中的服务契约还没有提供必要的方法,所以我们使用了cart模型。在您的插件中,按如下方式注入:
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()
加载项集合,然后返回未标记为已删除且没有父项的所有项的数组(即获得绑定和可配置产品的项,而不是其关联的子项)。每个数组项对应于购物车页上显示的行。
选择最适合你的需求。在大多数情况下,最后一种方法是您所需要的。
https://stackoverflow.com/questions/70837346
复制相似问题