Magento 2 checkout validasi bidang khusus

11

Checkout Magento2 - apa metode terbaik untuk menambahkan validasi untuk bidang checkout kustom saya yang tergantung pada metode pengiriman yang dipilih?

Misalnya, saya menambahkan bidang ke alamat di LayoutProcessor di mana saya dapat menentukan aturan validasi. Saya perlu membuat bidang ini diperlukan jika operator kustom saya dipilih.

Tujuan saya adalah untuk mencegah pengguna melanjutkan ke langkah berikutnya jika bidang kustom saya tidak diisi. Saya tahu saya dapat menambahkan validasi khusus sebelum penempatan pesanan (langkah Kaji & Pembayaran) tetapi saya perlu memvalidasi itu langkah sebelumnya.

Maciej Domski
sumber
Hai, bagaimana Anda menyelesaikan ini?
simonthesorcerer
@ maciej-domski Apakah Anda menyelesaikan ini?
Ranjit Shinde
Ini dapat membantu orang lain magento.stackexchange.com/questions/262239/…
Prathap Gunasekaran
@Maciej Domski memeriksa jawaban saya. Saya mencobanya untuk email konfirmasi dan kode kerjanya
Ketan Borada

Jawaban:

1

coba ini, cukup tambahkan 'validasi' => ['diperlukan-entri' => benar] seperti di bawah ini di plugin 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
sumber
0

ya itu mungkin dengan mengubah Magento_Checkout / js / model / shipping-save-processor / default.js

Saya telah menambahkan bidang confirm emailyang harus sama emaildan bidang yang harus diisi di checkout, Anda dapat menyesuaikan sesuai dengan kebutuhan.

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

memperpanjang 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
sumber