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.

Maciej Domski
źródło
Cześć, jak to rozwiązałeś?
simonthesorcerer
@ maciej-domski Czy to rozwiązałeś?
Ranjit Shinde,
To może pomóc innym magento.stackexchange.com/questions/262239/…
Prathap Gunasekaran
@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'
Tirth Patel
źródło
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();
                   }
               );
           }
       };
   }
);
Ketan Borada
źródło