新しい配送方法を作成していて、配送料金をチェックアウトするために新しい列を追加する必要があります。データは、メソッドの説明など、カスタムの配送方法設定から取得されます。または、顧客が情報を追加できるいくつかの入力フィールド(データはおそらく引用で保存され、後で順番に保存されます)。
おそらくすべての最も簡単な部分は、使用してテンプレートを実装することです
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のデータは、APIからデータを取得するjsrates()から取得されます。
<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ではそれが可能でした。M2が不可能だったとしたら、それはおかしいでしょう。
これが可能な理由はたくさんあります。たとえば、複数の店舗のドロップダウンまたは同様の方法で、店舗での受け取り方法を作成したい場合などです。