了解 Magento 表单验证
已发表: 2021-05-31目录
在我们今天的文章中,我们将了解 Magento 2 中的表单验证,以及如何在 Magento 商店中最好地实现表单验证。
表单验证模块
在 Magento 中,有三个主要的表单验证模块,它们基于并扩展了 jQuery 验证。
-
/lib/web/jquery/jquery.validate.js
:基础 jQuery 验证 /lib/web/mage/validation.js
: 包括基本的 jQuery 验证和附加功能,例如可用于添加自定义验证规则的$.validator.addMethod
-
/lib/web/mage/validation/validation.js
:包括mage/validation.js
并为验证器添加更多规则
表单验证规则
默认情况下,Magento 中的可用规则存储在/validation/rules.js
中。 但是,这并不是您可以使用的所有规则。 由于表单验证的主要模块都是基于 jQuery,您可以使用 jQuery 内置的验证方法。
操作方法
创建自定义规则
如上所述,您可以通过为mage/validation
模块创建 JavaScript mixin 并调用$.validator.addMethod
来创建自定义规则,如下所示:
$.validator.addMethod( '规则名称', 函数(值,元素){ // 验证规则检查后返回真或假 }, $.mage.__('验证失败时显示的错误信息') )
下面的代码将在 mixin 中添加一个验证规则,以检查输入字段是否只有五个单词。
供应商/模块/视图/前端/requirejs-config.js
变量配置 = { 配置:{ 混合:{ “法师/验证”:{ 'Vendor_Module/js/validation-mixin':真 } } } }
供应商/模块/视图/前端/web/js/validation-mixin.js
定义(['jquery'],函数($){ '使用严格'; 返回函数(){ $.validator.addMethod( '验证五个字', 函数(值,元素){ 返回值.split('').length == 5; }, $.mage.__('请准确输入五个字') ) } });
修改现有的验证消息
当您只需要修改现有的验证消息而不更改验证规则时,消息对象可能会派上用场。
例如,在下面的代码中:
$('#form-to-validate').mage('验证', { 消息:{ “输入名称”:{ 'validation-rule-1': '验证消息 1', 'validation-rule-2': '验证消息 2', }, } });
input-name
是对象的键,它的值是一个验证规则列表。 这些验证规则将验证消息作为其值,您可以根据自己的喜好自由修改。
创建自定义表单验证
使用mage/validation
库,您可以在将它们提交到服务器之前创建自定义表单验证。
第 1 步:启动验证
您可以使用两种方法来启动表单验证:
使用data-mage-init
属性
<form data-mage-init='{"validation": {}}'> ... </form>
使用text/x-magento-init
脚本类型标签
<script type="text/x-magento-init"> { “#my-form”:{ “验证”: {} } } </脚本>
步骤 2:为表单字段定义验证规则
Magento 有多种方法可以定义表单验证规则
作为属性
<input ... required="true"/>
作为带参数的属性
<input ... required="true" minlength="15"/>
作为类名
<input ... class="input-text required-entry"/>
作为带参数的类名
<input ... class="input-text required-entry" minlength="15"/>
作为data-validate
属性:
<input ... data-validate='{"required":true}'/>
作为带有参数的data-validate
属性
<input ... data-validate='{"required":true, "minlength":10}'/>
使用data-mage-init
<form ... data-mage-init='{"validation": {"rules": {"field-1": {"required":true}}}}'> ... </form>
使用带参数data-mage-init
<form ... data-mage-init='{"validation": {"rules": {"field-1": {"required":true, "minlength":20}}}}'> ... </form>
例子
在这里,我们将尝试创建表单字段,以及使用不同验证方法为每个字段创建验证表单。
<form class="form" method="post" data-mage-init='{"validation":{"rules": {"field-4": {"required":true}}}}'> <fieldset class="fieldset"> <div class="必填字段名"> <label class="label" for="field-1"><span>字段 1(使用数据验证)</span></label> <div class="控制"> <input name="field-1" title="Field 1" value="" class="input-text" type="text" data-validate='{"required":true, "url": true}' /> </div> </div> <div class="必填字段名"> <label class="label" for="field-2"><span>字段 2(使用属性)</span></label> <div class="控制"> <input name="field-2" title="字段 2" value="" class="input-text" type="text" required="true"/> </div> </div> <div class="必填字段名"> <label class="label" for="field-3"><span>字段 3(使用类名)</span></label> <div class="控制"> <input name="field-3" title="Field 3" value="" type="text" class="input-text required-entry"/> </div> </div> <div class="必填字段名"> <label class="label" for="field-4"><span>字段 4(使用 data-mage-init)</span></label> <div class="控制"> <input name="field-4" title="字段 4" value="" class="input-text" type="text"/> </div> </div> </fieldset> <div class="actions-toolbar"> <div class="primary"> <button type="submit" title="Submit" class="action submit primary"> <span>提交</span> </按钮> </div> </div> </form>
使用上述字段和表单验证,您的结果应如下所示: