在 magento 2 中获取基于产品的运输方式

Get product based shipping methods in magento 2

本店根据选择的商品有不同的发货方式。 在产品视图中,我想根据给定产品的可用送货方式显示其他信息。

目前,我尝试使用 Address::requestShippingRatescollectShippingRates,但是这种方法需要有效的报价,并且创建一个新报价只是为了列出可用的运输方式感觉有点过分。

有没有更好的方法来实现这个?

现在我想到了这个解决方案,只使用必要的信息构建我自己的费率请求。

$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();

如果有人有更好的方法,请随时纠正我 - 我愿意接受建议