## 验证器定义
为具体的验证场景或者数据表单定义验证器类,直接调用验证类的`check`方法即可完成验证,下面是一个例子:
我们定义一个`LoginValidate `验证器类用于`登录`的验证。
```
class LoginValidate extends Validate
{
constructor()
{
const rules = {
'user' : 'require|mail|max:30',
'pass' : 'require|chsDash|length:6,16'
}
super(rules)
}
}
```
可以直接在验证器类中使用`super()`方法第二个参数定义错误提示信息,例如:
~~~
class LoginValidate extends Validate
{
constructor()
{
const rules = {
'user' : 'require|mail|max:30',
'pass' : 'require|chsDash|length:6,16'
}
const message = {
'user.require' : '用户名必须填写',
'user.mail' : '用户名需为邮箱',
'user.max' : '你使用了长度过长的邮箱号码',
'pass.require' : '密码必须填写',
'pass.chsDash' : '密码格式错误',
'pass.length' : '密码长度为6~16个字符',
}
super(rules,message)
}
}
~~~
>[info] 如果没有定义错误提示信息,则使用系统默认的提示信息
## 数据验证
在需要进行`登录`验证的控制器方法中,添加如下代码即可:
~~~
const data = {
'user' : 'admin@admin.com',
'pass' : '123456'
};
const login = new LoginValidate();
if(!login.check(data)){
console.log(login.getError())
}
~~~
## 抛出验证异常
默认情况下验证失败后不会抛出异常,如果希望验证失败自动抛出异常,可以在验证器方法中进行设置:
在constructor中添加`super.fail = true` 或者在检验时添加
~~~
if(!login.check(data,true)){
console.log(login.getError())
}
~~~
也可以使用链表操作
~~~
login.setFail(true)
~~~
设置开启了验证失败后抛出异常的话,会自动抛出ValidateException异常需要自己捕获处理。
## 批量验证
默认情况下,一旦有某个数据的验证规则不符合,就会停止后续数据及规则的验证,如果希望批量进行验证,可以设置`setBatch(true)`:
~~~
let userValidate = Validate.make({
"user" : "require|length:6,20|chsDash",
"pass" : "require|length:6,20|alphaDash",
"code" : "require|number|length:6"
});
if (!userValidate.setBatch(true).check({
"user" : 1,
})){
console.log(userValidate.getError())
}
~~~
默认`setBatch(false)`情况下输出应该为`user长度错误`
开启批量验证后,返回数组
~~~
[
{
rule: 'length',
key: 'user',
value: 1,
message: 'user长度错误'
},
{
rule: 'require',
key: 'pass',
value: undefined,
message: 'pass必须填写'
},
{
rule: 'require',
key: 'code',
value: undefined,
message: 'code必须填写'
}
]
~~~