Magento 2.4 PHP7.4
我需要移動名字欄位的驗證以單擊下訂單。這意味著當單擊下訂單時,應該顯示名字欄位驗證。以前,在選擇運輸方式時會顯示驗證。我通過修改 checkout_index_index.xml 禁用了該驗證,如下面的代碼所示。我現在包括了一個額外的付款驗證器,我認為它應該在單擊下訂單時生成驗證,但沒有發生。我可以觸發 javascript 警報彈出視窗進行驗證,但這并不理想。
根據我的研究,由于 firstname 欄位沒有嵌入到表單中,因此它不會對通過 javascript 添加到其中的必需屬性做出反應。
修改 checkout_index_index.xml
<item name="shipping-address-fieldset" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="config" xsi:type="array">
<item name="deps" xsi:type="array">
<item name="0" xsi:type="string">checkoutProvider</item>
</item>
</item>
<item name="displayArea" xsi:type="string">additional-fieldsets</item>
<item name="children" xsi:type="array">
<item name="firstname" xsi:type="array">
<item name="config" xsi:type="array">
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">false</item>
</item>
</item>
</item>
額外的付款驗證器 -
<item name="additional-payment-validators" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="children" xsi:type="array">
<!-- merge payment validators here -->
<item name="email-validator" xsi:type="array">
<item name="component" xsi:type="string">Magento_Checkout/js/view/payment/email-validator</item>
</item>
<item name="address-validator" xsi:type="array">
<item name="component" xsi:type="string">Magento_Checkout/js/view/shipping-address/address-validator</item>
</item>
地址驗證器(視圖)-
/**
* Copyright ? Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define(
[
'uiComponent',
'Magento_Checkout/js/model/payment/additional-validators',
'Magento_Checkout/js/model/default-validator'
],
function (Component, additionalValidators, defaultValidator) {
'use strict';
console.log(defaultValidator);
additionalValidators.registerValidator(defaultValidator);
console.log("inside address validator");
return Component.extend({});
}
);
默認驗證器(模型)-
/**
* Copyright ? Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'jquery',
'mageUtils',
'./default-validation-rules',
'mage/translate'
], function ($, utils, validationRules, $t) {
'use strict';
return {
validationErrors: [],
/**
* @param {Object} address
* @return {Boolean}
*/
validate: function (address) {
var self = this;
this.validationErrors = [];
$.each(validationRules.getRules(), function (field, rule) {
var message;
if (rule.required && utils.isEmpty(address[field])) {
message = $t('Field ') field $t(' is required.');
self.validationErrors.push(message);
}
});
return !this.validationErrors.length;
}
};
});
驗證規則 -
/**
* Copyright ? Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define([], function () {
'use strict';
return {
/**
* @return {Object}
*/
getRules: function () {
return {
'country_id': {
'required': true
},
'firstname': {
'required': true
}
};
}
};
});
uj5u.com熱心網友回復:
通過聯系 Amasty 支持找到了答案 - 需要關閉動態驗證(shipping-mixin.js)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471293.html
標籤:验证 查看 magento2.4
上一篇:Nest.js獨特的dto驗證器
下一篇:Spring框架驗證回應資料
