Answers:
基本上,您需要注册自定义验证方法,然后将其用于system.xml
文件中的字段。
定义您的验证方法:
jQuery.validator.addMethod(
"validate-custom",
function (v) {
return jQuery.mage.isEmptyNoTrim(v) || /^[1-4]+$/.test(v);
},
'Please use digits only (1-4) in this field.'
);
并将其用于您的领域system.xml
:
<validate>validate-number validate-zero-or-greater validate-custom</validate>
在Magento 2核心代码中搜索“ validator.addMethod”,那里有很多示例,它们显示了更复杂的用例。
正如@Wojtek Naruniec所写,您必须在javascript文件中创建自己的自定义验证方法,并在system.xml文件的模块配置字段中使用它。
假设您的字段为:
<field id="color" translate="label comment" type="text" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Color</label>
<comment>Exadecimal value, without #: ex. FFFFFF</comment>
</field>
并且您想检查字段长度(正好6个字符)。
创建您的JavaScript文件,
vendorName / moduleName / view / adminhtml / web / js / validation.js
例如:
require([
'jquery',
'mage/translate',
'jquery/validate'],
function($){
$.validator.addMethod(
'validate-exadecimal-color-length', function (v) {
return (v.length == 6);
}, $.mage.__('Field must have length of 6'));
}
);
然后在管理配置页面中加载javascript文件,因此您必须生成该文件
vendorName / moduleName / view / adminhtml / layout / adminhtml_system_config_edit.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<link src="vendorName_moduleName::js/validation.js"/>
</head>
</page>
现在,您可以使用您的验证器将<validate>
标记添加到system.xml文件的<field>
标记中:
<field id="color" translate="label comment" type="text" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Color</label>
<validate>validate-exadecimal-color-length</validate>
<comment>Exadecimal value, without #: ex. FFFFFF</comment>
</field>