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.


Hallo, wie hast du das gelöst?
Simonthesorcerer

@ maciej-domski Hast du das gelöst?
Ranjit Shinde


@ 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'

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();
                   }
               );
           }
       };
   }
);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.