Magento 2 चेकआउट कस्टम क्षेत्र सत्यापन


11

Magento2 चेकआउट - मेरे कस्टम चेकआउट फ़ील्ड के लिए सत्यापन जोड़ने का सबसे अच्छा तरीका क्या है जो चयनित शिपिंग विधि पर निर्भर करता है?

उदाहरण के लिए मैं लेआउटप्रोसेसर में पते के लिए फ़ील्ड जोड़ रहा हूँ जहाँ मैं सत्यापन नियम निर्दिष्ट कर सकता हूँ। यदि मेरे कस्टम कैरियर का चयन किया जाता है, तो मुझे इस क्षेत्र की आवश्यकता होगी।

मेरा लक्ष्य उपयोगकर्ता को अगले चरण में जाने से रोकना है यदि मेरा कस्टम फ़ील्ड नहीं भरा गया है। मुझे पता है कि मैं ऑर्डर प्लेसमेंट (रिव्यू एंड पेमेंट्स स्टेप) से पहले कस्टम सत्यापन जोड़ने में सक्षम हूं, लेकिन मुझे एक कदम पहले इसे मान्य करने की आवश्यकता है।


नमस्ते, आपने इसे कैसे हल किया?
सिमोथेनेसोरसर

@ maciej-domski क्या आपने इसे हल किया?
रंजीत शिंदे

यह दूसरों को मदद कर सकता है magento.stackexchange.com/questions/262239/…
प्रताप

@ मैसीज डोम्स्की ने मेरे उत्तर की जांच की। मैंने इसे पुष्टि ईमेल के लिए आज़माया और यह कोड काम कर रहा है
केतन बोरदा

जवाबों:


1

इसे आज़माएं, लेआउटप्रोसेसर प्लगइन में नीचे की तरह 'सत्यापन' => ['आवश्यक-प्रविष्टि' => सत्य] जोड़ें

'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

हाँ यह Magento_Checkout / js / मॉडल / शिपिंग-सेव-प्रोसेसर / default.js में बदलकर संभव है

मैंने फ़ील्ड जोड़ा है confirm emailजो कि समान होना चाहिए emailऔर यह चेकआउट में आवश्यक फ़ील्ड है, आप आवश्यकता के अनुसार अनुकूलित कर सकते हैं।

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

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();
                   }
               );
           }
       };
   }
);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.