La méthode d'expédition personnalisée sélectionnée affiche une zone de saisie de texte personnalisée lors du paiement à la page


9

J'ai ajouté avec succès une méthode d'expédition personnalisée comme celle-ci:

app / etc / config.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <carriers>
            <lime>
                <active>1</active>
                <allowed_methods>delivery</allowed_methods>
                <methods>delivery</methods>
                <type>NAMESPACE</type>
                <sallowspecific>0</sallowspecific>
                <model>Namespace\Module\Model\Carrier</model>
                <name>Namespace_Module custom Shipping</name>
                <title>Namespace_Module custom Shipping</title>
                <handling_type>F</handling_type>
            </lime>
        </carriers>
    </default>
</config>

app / code / Espace de noms / Module / Modèle / Carrier.php

public function collectRates(RateRequest $request)
{
    if (!$this->getConfigFlag('active')) {
        return false;
    } 
    $result = $this->_rateResultFactory->create(); 
    $method = $this->_rateMethodFactory->create(); 
    $method->setCarrier('HILO');
    $method->setCarrierTitle('HILO'); 
    $method->setMethod('Fast');
    $method->setMethodTitle('Fast'); 
    $amount = $this->getConfigData('price'); 
    $method->setPrice($amount);
    $method->setCost($amount); 
    $result->append($method);
    return $result;
}

Il apparaît sur la page de paiement, mais je souhaite afficher les données d'entrée de la zone de texte personnalisée lorsque l'utilisateur choisit ma méthode d'expédition personnalisée, et je peux enregistrer les données de la zone de texte d'entrée personnalisée.

voici à quoi je veux que ça ressemble:

entrez la description de l'image ici


2
salut, comment avez-vous ajouté ce champ? pouvez-vous m'aider à obtenir un code?
Mujahidh

Réponses:


2

Afin d'afficher un champ de saisie personnalisé après avoir sélectionné votre méthode d'expédition personnalisée, vous devez ajouter un bloc js en vous abonnant pour sélectionner l'événement de méthode:

Ajouter un phtml personnalisé à la mise en page checkout_index_index.xml

Ajoutez ensuite le bloc suivant à votre phtml:

<script type="text/javascript">
    require([
        'jquery',
        'Magento_Checkout/js/model/quote',
    ], function (jQuery, quote) {
        jQuery(document).ready(function () {
            quote.shippingMethod.subscribe(function (value) {
                if (quote.shippingMethod() && quote.shippingMethod().carrier_code == 'your_custom_shipping_method_code') {
                    var customBlock = "<div class ='custom-information'><input type="text" id="your_custom_id"></div>";
                    if((!$('.custom-information').length > 0)) {
                        $('#checkout-shipping-method-load').append(customBlock);
                    }
                });
            });
        });
    });
</script>

Avec le code ci-dessus, vous ajouterez l'entrée que vous souhaitez sous votre méthode d'expédition personnalisée.

Après cela, vous devriez avoir à créer un plugin pour enregistrer votre valeur personnalisée.

Vérifier: Magento \ Checkout \ Model \ GuestShippingInformationManagement

J'espère que ça t'aide. Cordialement, Pablo


2
pouvez-vous s'il vous plaît expliquer ce petit plus
Mujahidh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.