Validation de champ personnalisé pour le contrôle de Magento 2

11

Paiement Magento2 - quelle est la meilleure méthode pour ajouter une validation pour mon champ de paiement personnalisé qui dépend de la méthode d'expédition sélectionnée?

Par exemple, j'ajoute un champ au formulaire d'adresse dans LayoutProcessor où je peux spécifier des règles de validation. Je dois rendre ce champ obligatoire si mon transporteur personnalisé est sélectionné.

Mon objectif est d'empêcher l'utilisateur de passer à l'étape suivante si mon champ personnalisé n'est pas rempli. Je sais que je suis en mesure d'ajouter des validations personnalisées avant la passation de la commande (étape Revue et paiements) mais je dois la valider une étape avant.

Maciej Domski
la source
Salut, comment avez-vous résolu cela?
simonthesorcerer
@ maciej-domski Avez-vous résolu ce problème?
Ranjit Shinde
Cela peut aider les autres magento.stackexchange.com/questions/262239/…
Prathap Gunasekaran
@Maciej Domski vérifier ma answer.i je l'ai essayé pour l'e-mail de confirmation et son code de travail
Ketan Borada

Réponses:

1

essayez ceci, ajoutez simplement 'validation' => ['required-entry' => true] comme ci-dessous dans le plugin LayoutProcessor

'config' => [
                'customScope' => 'shippingAddress',
                'template' => 'ui/form/field',
                'elementTmpl' => 'ui/form/element/input',
                'options' => [],
                'id' => 'custom_field'
            ],
            'dataScope' => 'customfield',
            'label' => 'custom field # :',
            'provider' => 'checkoutProvider',
            'validation' => ['required-entry' => true],
            'visible' => true,
            'sortOrder' => 250,
            'id' => 'custom_field'
Tirth Patel
la source
0

oui c'est possible en changeant dans Magento_Checkout / js / model / shipping-save-processor / default.js

J'ai ajouté un champ confirm emailqui doit être identique à emailet c'est un champ obligatoire dans la caisse, vous pouvez personnaliser selon les besoins.

app\code\Ketan\Checkout\view\frontend\requirejs-config.js

var config = {
    "map": {
       "*": {
           "Magento_Checkout/js/model/shipping-save-processor/default" : "Ketan_Checkout/js/shipping-save-processor"
       }
   }
}

étendre js file app\code\Ketan\Checkout\view\frontend\web\js\shipping-save-processor.js

/*
* *
*  @author DCKAP Team
*  @copyright Copyright (c) 2018 DCKAP (https://www.dckap.com)
*  @package Dckap_CustomFields
*/
define(
   [
       'ko',
       'Magento_Checkout/js/model/quote',
       'Magento_Checkout/js/model/resource-url-manager',
       'mage/storage',
       'Magento_Checkout/js/model/payment-service',
       'Magento_Checkout/js/model/payment/method-converter',
       'Magento_Checkout/js/model/error-processor',
       'Magento_Checkout/js/model/full-screen-loader',
       'Magento_Checkout/js/action/select-billing-address',
       'jquery'
   ],
   function (
       ko,
       quote,
       resourceUrlManager,
       storage,
       paymentService,
       methodConverter,
       errorProcessor,
       fullScreenLoader,
       selectBillingAddressAction,
       $
   ) {
       'use strict';

       return {
           saveShippingInformation: function () {
               var payload;

               var username = $("#customer-email").val();
               var conformusername = $("#conformusername").val();

              /*============ Customization Start =============*/
              //if(quote.shippingMethod().method_code=='flaterate'){ // Check if flaterate is selected
                if(conformusername != username){
                  $("#conformusername-error").show(); // show hidden message
                  $("#conformusername").focus();      // move cursor to the point
                  return false;
                 }
              // }
              /*============ Customization End =============*/


               if (!quote.billingAddress()) {
                   selectBillingAddressAction(quote.shippingAddress());
               }
               payload = {
                   addressInformation: {
                       shipping_address: quote.shippingAddress(),
                       billing_address: quote.billingAddress(),
                       shipping_method_code: quote.shippingMethod().method_code,
                       shipping_carrier_code: quote.shippingMethod().carrier_code
                   }
               };
               fullScreenLoader.startLoader();

               return storage.post(
                   resourceUrlManager.getUrlForSetShippingInformation(quote),
                   JSON.stringify(payload)
               ).done(
                   function (response) {
                       quote.setTotals(response.totals);
                       paymentService.setPaymentMethods(methodConverter(response.payment_methods));
                       fullScreenLoader.stopLoader();
                   }
               ).fail(
                   function (response) {
                       errorProcessor.process(response);
                       fullScreenLoader.stopLoader();
                   }
               );
           }
       };
   }
);
Ketan Borada
la source