## 驗證器定義
為具體的驗證場景或者數據表單定義驗證器類,直接調用驗證類的`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必須填寫'
}
]
~~~