Tôi đang thực hiện phương thức giao hàng mới và tôi cần thêm cột mới để kiểm tra giá vận chuyển. Dữ liệu sẽ đến từ các cài đặt phương thức vận chuyển tùy chỉnh, ví dụ mô tả phương thức. Hoặc một số trường đầu vào nơi khách hàng có thể thêm thông tin (dữ liệu có thể sẽ được lưu trong trích dẫn và sau đó theo thứ tự).
Có lẽ phần dễ nhất trong tất cả là mẫu triển khai bằng cách sử dụng
Magento_Checkout/web/template/shipping.html
Nó chỉ cần cái này
<div data-bind="text: method.description"></div>
Vấn đề là tôi không thể tìm ra cách thêm dữ liệu tùy chỉnh. Nó không đủ để thêm điều này:
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;
}
Dữ liệu cho html đến từ js Rate (), lấy dữ liệu từ 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>
Sau này, có nhiều bước trong khi một cái gì đó thực sự được thu thập. tôi đã tìm thấy
Magento \ Trích dẫn \ Model \ Giỏ hàng \ ShippingMethodConverter modelToDataObject ()
Điều đó có vẻ hứa hẹn nhất nhưng nếu tôi cố gắng thêm thuộc tính của mình vào đó, không có gì xảy ra.
Vì vậy, câu hỏi của tôi là, nếu thực sự có một cách để thêm dữ liệu mới vào giá vận chuyển? Ở M1, điều đó là có thể. Sẽ thật điên rồ nếu M2 không thể.
Có nhiều lý do tại sao điều này nên có thể. Ví dụ: nếu tôi muốn thực hiện phương thức lấy hàng trong cửa hàng với nhiều cửa hàng thả xuống hoặc một cái gì đó tương tự.