在 magento 2 中获取基于产品的运输方式
Get product based shipping methods in magento 2
本店根据选择的商品有不同的发货方式。
在产品视图中,我想根据给定产品的可用送货方式显示其他信息。
目前,我尝试使用 Address::requestShippingRates
和 collectShippingRates
,但是这种方法需要有效的报价,并且创建一个新报价只是为了列出可用的运输方式感觉有点过分。
有没有更好的方法来实现这个?
现在我想到了这个解决方案,只使用必要的信息构建我自己的费率请求。
$quoteItem = $this->_quoteItemFactory->create();
$quoteItem->setQuote($quote);
$quoteItem->setProduct($product);
/** @var $request \Magento\Quote\Model\Quote\Address\RateRequest */
$request = $this->_rateRequestFactory->create();
$request->setAllItems([$quoteItem]);
$request->setDestCountryId($this->getCurrentCountry());
$request->setStoreId($quote->getStoreId());
$request->setWebsiteId($this->_storeManager->getWebsite()->getId());
$request->setBaseCurrency($this->_storeManager->getStore()->getBaseCurrency());
$request->setPackageCurrency($request->getBaseCurrency());
/** @var \Magento\Shipping\Model\Rate\Result $result */
$result = $this->_rateCollector->create()->collectRates($request)->getResult();
$rates = $result->getAllRates();
如果有人有更好的方法,请随时纠正我 - 我愿意接受建议
本店根据选择的商品有不同的发货方式。 在产品视图中,我想根据给定产品的可用送货方式显示其他信息。
目前,我尝试使用 Address::requestShippingRates
和 collectShippingRates
,但是这种方法需要有效的报价,并且创建一个新报价只是为了列出可用的运输方式感觉有点过分。
有没有更好的方法来实现这个?
现在我想到了这个解决方案,只使用必要的信息构建我自己的费率请求。
$quoteItem = $this->_quoteItemFactory->create();
$quoteItem->setQuote($quote);
$quoteItem->setProduct($product);
/** @var $request \Magento\Quote\Model\Quote\Address\RateRequest */
$request = $this->_rateRequestFactory->create();
$request->setAllItems([$quoteItem]);
$request->setDestCountryId($this->getCurrentCountry());
$request->setStoreId($quote->getStoreId());
$request->setWebsiteId($this->_storeManager->getWebsite()->getId());
$request->setBaseCurrency($this->_storeManager->getStore()->getBaseCurrency());
$request->setPackageCurrency($request->getBaseCurrency());
/** @var \Magento\Shipping\Model\Rate\Result $result */
$result = $this->_rateCollector->create()->collectRates($request)->getResult();
$rates = $result->getAllRates();
如果有人有更好的方法,请随时纠正我 - 我愿意接受建议