alaa / magento2-input-validation
基于Respect Validation的Magento2 Rv 输入验证
1.0.0
2018-01-06 02:00 UTC
Requires
- respect/validation: ^1.1
This package is auto-updated.
Last update: 2024-09-08 12:12:12 UTC
README
查看完整规则列表
安装
- 通过composer安装
composer require alaa/magento2-input-validation
- 启用模块
php bin/magento module:enable Alaa_RvInputValidation
- 升级Magento
php bin/magento setup:upgrade
用法
1. 后端
在后端使用非常简单,您可以使用适合需求的任何方法
- validteInput: 使用单个规则验证输入。它接受两个参数,输入值作为字符串和规则作为数组。
- validate: 使用多个规则验证输入。它遍历规则并调用
validateInput
方法。 - validatePostData 和 validateGetData: 验证多个输入和每个输入的多个规则
数组规则元素包括
- class: 必需的类名,如 Email、NotEmpty、Between 等。这用于实例化验证规则对象
- args: 可选元素,用于传递到验证类构造函数中
示例
// Initialize validation class
public function __construct(ValidationInterface $validation)
{
$this->validation = $validation;
}
// valid
$isEmail = $this->validation->validateInput('alaa.almaliki@gmail.com', ['class' => 'Email']);
$isUrl = $this->validation->validateInput('https://google.com', ['class' => 'Url']);
$isLegalAge = $this->validation->validateInput('22', ['class' => 'Between', 'args' => ['min' => '18', 'max' => '22']]);
var_dump($isEmail, $isUrl, $isLegalAge);
// invalid
$isEmail = $this->validation->validateInput('alaa.almaliki@gmail', ['class' => 'Email']);
$isUrl = $this->validation->validateInput('google.com', ['class' => 'Url']);
$isLegalAge = $this->validation->validateInput('22', ['class' => 'Between', 'args' => ['min' => '18', 'max' => '20']]);
var_dump($isEmail, $isUrl, $isLegalAge);
// validate method work on multiple rules for each input
$isEmail = $this->validation->validate('alaa.almaliki@gmail.com', [['class' => 'NotEmpty'], ['class' => 'Email']]);
var_dump($isEmail);
$validationResults = $this->validation->validatePostData(
['email' => 'alaa.almaliki@gmail.com', 'url' => 'https://google.com'],
[
'email' => [
[
'class' => 'Email',
'success_message' => 'Valid Email',
'failure_message' => 'Not Valid Email',
],
],
'url' => [
[
'class' => 'Url',
'success_message' => 'Valid Url',
'failure_message' => 'Not Valid Url',
]
]
]
);
// results = [
// 'email' => ['is_valid' => true|false, 'message' => 'Valid Email'|'Not Valid Email'],
// 'url' => ['is_valid' => true|false, 'message' => 'Valid Url'|'Not Valid Url']
// ]
var_dump($validationResults);
// this is an alias of validate post method
// just to show that you can use multiple rules here for one input
$emailGetResults = $this->validation->validateGetData(
['email' => 'alaa.almaliki@gmail.com'],
[
'email' => [
[
'class' => 'NotEmpty',
'success_message' => 'Valid Email',
'failure_message' => 'Not Valid Email',
],
[
'class' => 'Email',
'success_message' => 'Valid Email',
'failure_message' => 'Not Valid Email',
],
],
]
);
// results = ['is_valid' => true|false, 'message' => 'Valid Email'|'Not Valid Email']
var_dump($emailGetResults);
2. 前端
在前端自定义表单中使用非常简单。如下例所示,学习如何应用验证非常直接。这里的规则可以是单个规则和单个 JSON 对象,也可以是规则数组。第一个内联方法使用验证规则数组,第二个方法在 init 脚本中使用单个 JSON 对象应用规则。
验证在每个输入点击外部区域后发生,如果验证成功,将显示基本绿色消息。如果验证失败,则将显示基本红色消息并将新类添加到标记为无效的输入值。一旦用户填写表单,提交表单时将进行验证,如果验证成功则继续,如果不成功则停止。
规则具有规则名称,即验证类,args 是可选的,name 是可选的,用于消息中。可以通过覆盖 Alaa/RvInputValidation/view/frontend/web/js/rv-input-results.js
重写验证结果
示例
<form name="test_form" id="contact-form">
<!-- Method 1 validate inline-->
Email: <input type="text" id="email" class="input-text required" data-mage-init='{"rv-input-validator": {"rules": [{"rule": "email"}, {"rule": "NotEmpty"}], "name": "Email"}}'>
Age: <input type="text" id="age" class="input-text required">
<button type="submit" title="Submit" class="action submit primary">
<span>Submit</span>
</button>
</form>
<!-- Method 2 validate in init script tag-->
<script type="text/x-magento-init">
{
"#age": {
"rv-input-validator": {"rules": {"rule": "between", "args": {"min": 18, "max": 22}}, "name": "Age"}}
}
</script>
贡献
请随意提出问题和贡献
许可证
MIT