我正在制定新的送货方式,我需要在结帐运费中添加新列。数据将来自自定义的运输方法设置,例如方法说明。或客户可以在其中添加信息的某些输入字段(数据可能会保存在报价中,然后再按顺序保存)。
最简单的部分可能是通过使用
Magento_Checkout/web/template/shipping.html
它只需要这个
<div data-bind="text: method.description"></div>
问题是我不知道如何添加自定义数据。仅添加以下内容还不够:
public function collectRates(RateRequest $request)
{
if (!$this->isActive()) return false;
$method = $this->rateMethodFactory->create();
$method->setData('carrier', $this->getCarrierCode());
$method->setData('carrier_title', $this->getConfigData('title'));
$method->setData('method_title', $this->getConfigData('title'));
$method->setData('method', $this->getCarrierCode());
$method->setPrice($this->_price);
$method->setData('cost', $this->_price);
// custom
$method->setData('description', $this->getConfigData('description'));
$result = $this->rateResultFactory->create();
$result->append($method);
return $result;
}
html的数据来自js rates(),后者从API获取数据:
<route url="/V1/carts/:cartId/shipping-methods" method="GET">
<service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="getList"/>
<resources>
<resource ref="Magento_Cart::manage" />
</resources>
</route>
在此之后,有许多步骤实际上要收集一些东西。我发现
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject()
看起来最有前途,但是如果我尝试向其中添加属性,则什么也没有发生。
所以我的问题是,是否真的有办法向运费中添加新数据?在M1中,这是可能的。如果不可能的话,那将是疯狂的。
有许多原因使之成为可能。例如,如果我想在有多个商店下拉菜单或类似内容的商店方法中进行提货。