Benutzerdefinierte Feldvalidierung für Magento 2-Checkout

11

Magento2-Kaufabwicklung - Was ist die beste Methode, um eine Validierung für mein benutzerdefiniertes Kaufabwicklungsfeld hinzuzufügen, die von der ausgewählten Versandmethode abhängt?

Zum Beispiel füge ich dem Adressformular in LayoutProcessor ein Feld hinzu, in dem ich Validierungsregeln angeben kann. Ich muss dieses Feld erforderlich machen, wenn mein benutzerdefinierter Netzbetreiber ausgewählt ist.

Mein Ziel ist es, den Benutzer daran zu hindern, mit dem nächsten Schritt fortzufahren, wenn mein benutzerdefiniertes Feld nicht ausgefüllt ist. Ich weiß, dass ich vor der Auftragserteilung benutzerdefinierte Validierungen hinzufügen kann (Schritt "Überprüfen und Zahlungen"), muss diese jedoch einen Schritt vorher validieren.

Maciej Domski
quelle
Hallo, wie hast du das gelöst?
Simonthesorcerer
@ maciej-domski Hast du das gelöst?
Ranjit Shinde
Dies kann anderen helfen magento.stackexchange.com/questions/262239/…
Prathap Gunasekaran
@ Maciej Domski überprüfen Sie meine Antwort. Ich versuchte es für Bestätigungs-E-Mail und es funktioniert Code
Ketan Borada

Antworten:

1

Versuchen Sie dies, fügen Sie einfach 'Validierung' => ['Erforderlicher Eintrag' => wahr] wie unten im LayoutProcessor-Plugin hinzu

'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
quelle
0

Ja, es ist möglich, indem Sie Magento_Checkout / js / model / Versand-Speicherprozessor / default.js ändern

Ich habe ein Feld hinzugefügt, confirm emaildas dem emailund dem erforderlichen Feld an der Kasse entsprechen muss. Sie können es je nach Anforderung anpassen.

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

verlängern 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
quelle