Je crée une nouvelle méthode d'expédition et je dois ajouter une nouvelle colonne pour vérifier les tarifs d'expédition. Les données proviendraient de paramètres de méthode d'expédition personnalisés, par exemple la description de la méthode. Ou un champ de saisie où le client peut ajouter des informations (les données seront probablement enregistrées dans le devis et plus tard dans l'ordre).
Probablement la partie la plus simple de tous est d'implémenter un modèle en utilisant
Magento_Checkout/web/template/shipping.html
Il a juste besoin de ça
<div data-bind="text: method.description"></div>
Le problème est que je ne peux pas comprendre comment ajouter des données personnalisées. Il ne suffit pas d'ajouter ceci:
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;
}
Les données html proviennent de js rates (), qui obtient les données de l'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>
Après cela, il y a de nombreuses étapes pendant que quelque chose est collecté. j'ai trouvé
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject ()
qui avait l'air le plus prometteur mais si j'essaye d'y ajouter mon attribut, rien ne se passe.
Ma question est donc la suivante: s'il existe réellement un moyen d'ajouter de nouvelles données aux tarifs d'expédition? En M1, c'était possible. Ce serait fou si M2 ce n'était pas possible.
Il existe de nombreuses raisons pour lesquelles cela devrait être possible. Par exemple, si je voulais faire la méthode de ramassage en magasin avec plusieurs magasins déroulants ou quelque chose de similaire.