Walidacja niestandardowego pola kasy Magento 2


11

Kasa Magento2 - jaka jest najlepsza metoda dodania weryfikacji mojego niestandardowego pola kasy, która zależy od wybranej metody wysyłki?

Na przykład dodaję pole do formularza adresu w LayoutProcessor, w którym mogę określić reguły sprawdzania poprawności. Muszę wprowadzić to pole, jeśli zostanie wybrany mój niestandardowy operator.

Moim celem jest uniemożliwienie użytkownikowi przejścia do następnego kroku, jeśli moje niestandardowe pole nie jest wypełnione. Wiem, że mogę dodać niestandardowe weryfikacje przed złożeniem zamówienia (etap Przegląd i płatności), ale muszę to sprawdzić wcześniej.


Cześć, jak to rozwiązałeś?
simonthesorcerer

@ maciej-domski Czy to rozwiązałeś?
Ranjit Shinde,


@Maciej Domski sprawdź moją odpowiedź. Wypróbowałem wiadomość e-mail z potwierdzeniem i działa kod
Ketan Borada,

Odpowiedzi:


1

spróbuj, po prostu dodaj „validation” => ['wymagany-wpis' => prawda] jak poniżej we wtyczce 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'

0

tak, jest to możliwe poprzez zmianę w Magento_Checkout / js / model / shipping-save-Processor / default.js

Dodałem pole, confirm emailktóre musi być takie samo, jak emaili pole wymagane w kasie, można dostosować zgodnie z wymaganiami.

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"
       }
   }
}

przedłużyć 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();
                   }
               );
           }
       };
   }
);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.