Sto creando un nuovo metodo di spedizione e devo aggiungere una nuova colonna per verificare le tariffe di spedizione. I dati verrebbero dalle impostazioni personalizzate del metodo di spedizione, ad esempio la descrizione del metodo. O qualche campo di input in cui il cliente può aggiungere informazioni (probabilmente i dati verrebbero salvati tra virgolette e successivamente nell'ordine).
Probabilmente la parte più semplice di tutte è implementare template usando
Magento_Checkout/web/template/shipping.html
Ne ha solo bisogno
<div data-bind="text: method.description"></div>
Il problema è che non riesco a capire come aggiungere dati personalizzati. Non è sufficiente aggiungere questo:
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;
}
I dati per HTML provengono da js rate (), che ottiene i dati dall'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>
Dopo questo ci sono molti passaggi mentre qualcosa viene effettivamente raccolto. ho trovato
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject ()
sembrava il più promettente ma se provo ad aggiungere il mio attributo ad esso, non succede nulla.
Quindi la mia domanda è: se esiste effettivamente un modo per aggiungere nuovi dati alle tariffe di spedizione? In M1 era possibile. Sarebbe folle se M2 non fosse possibile.
Ci sono molte ragioni per cui questo dovrebbe essere possibile. Ad esempio, se volessi fare il ritiro nel metodo store con drop store multipli o qualcosa di simile.