Wprowadzam nową metodę wysyłki i muszę dodać nową kolumnę, aby sprawdzić stawki wysyłki. Dane pochodzą z niestandardowych ustawień metody wysyłki, na przykład opisu metody. Lub jakieś pole wejściowe, w którym klient może dodać informacje (dane prawdopodobnie zostaną zapisane w ofercie, a później w kolejności).
Prawdopodobnie najłatwiejszą częścią jest wdrożenie szablonu przy użyciu
Magento_Checkout/web/template/shipping.html
Po prostu tego potrzebuje
<div data-bind="text: method.description"></div>
Problem w tym, że nie mogę wymyślić, jak dodać niestandardowe dane. Nie wystarczy dodać to:
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;
}
Dane do html pochodzą z js rate (), który pobiera dane z 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>
Po tym jest wiele kroków, podczas gdy coś faktycznie się zbiera. znalazłem
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject ()
wyglądało to najbardziej obiecująco, ale jeśli spróbuję dodać do niego mój atrybut, nic się nie stanie.
Więc moje pytanie brzmi: czy rzeczywiście istnieje sposób na dodanie nowych danych do stawek wysyłki? W M1 było to możliwe. Byłoby szalone, gdyby M2 nie było możliwe.
Jest wiele powodów, dla których powinno to być możliwe. Na przykład, jeśli chciałbym wybrać metodę odbioru w sklepie z rozwijanymi wieloma sklepami lub coś podobnego.