Ich mache eine neue Versandart und muss eine neue Spalte zu den Versandkosten hinzufügen. Die Daten stammen aus benutzerdefinierten Versandmethodeneinstellungen, z. B. Methodenbeschreibung. Oder ein Eingabefeld, in das der Kunde Informationen hinzufügen kann (Daten würden wahrscheinlich im Angebot und später in der Reihenfolge gespeichert).
Der wahrscheinlich einfachste Teil von allen ist die Implementierung von Vorlagen mithilfe von
Magento_Checkout/web/template/shipping.html
Es braucht nur das
<div data-bind="text: method.description"></div>
Das Problem ist, dass ich nicht herausfinden kann, wie benutzerdefinierte Daten hinzugefügt werden. Es reicht nicht aus, dies hinzuzufügen:
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;
}
Daten für HTML stammen von js Raten (), die Daten von der API abrufen:
<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>
Danach gibt es viele Schritte, während tatsächlich etwas gesammelt wird. ich fand
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject ()
Das sah am vielversprechendsten aus, aber wenn ich versuche, mein Attribut hinzuzufügen, passiert nichts.
Meine Frage ist also, ob es tatsächlich eine Möglichkeit gibt, neue Daten zu den Versandkosten hinzuzufügen. In M1 war es möglich. Es wäre verrückt, wenn M2 es nicht möglich wäre.
Es gibt viele Gründe, warum dies möglich sein sollte. Zum Beispiel, wenn ich die Abholmethode im Geschäft mit mehreren Dropdown-Geschäften oder ähnlichem durchführen wollte.