# 验证场景
验证器重支持定义场景,并且验证不同场景的数据,例如:
class ArticleValidate extends Validate
{
constructor()
{
const rules = {
'id' : 'require|number',
'content' : 'require|length:1,2000',
'title' : 'require|chsDash|length:4,50'
}
const message = {
'id.require' : '缺少参数:文章Id',
'id.number' : '参数错误:文章Id',
'content.require' : '文章内容必须填写',
'content.length' : '文章长度为1~2000个字符',
'title.require' : '文章标题必须填写',
'title.chsDash' : '文章标题格式错误',
'title.length' : '文章标题长度为4~50个字符',
}
super(rules,message);
this.setScene({
'add' : 'content,title',
'edit': 'id,content,title',
'del' : 'id'
});
}
}
也可以使用如下写法:
class ArticleValidate extends Validate
{
rule = {
'id' : 'require|number',
'content' : 'require|length:1,2000',
'title' : 'require|chsDash|length:4,50'
}
msg = {
'id.require' : '缺少参数:文章Id',
'id.number' : '参数错误:文章Id',
'content.require' : '文章内容必须填写',
'content.length' : '文章长度为1~2000个字符',
'title.require' : '文章标题必须填写',
'title.chsDash' : '文章标题格式错误',
'title.length' : '文章标题长度为4~50个字符',
}
scene = {
'add' : 'content,title',
'edit': 'id,content,title',
'del' : 'id'
}
}
然后可以在验证方法中制定验证的场景
$data = {
'content' : '文章内容',
'title' : '文章标题'
};
const Article = new ArticleValidate();
if(!Article.setSceneName('add').check($data)){
console.log(Article.getError())
}
# 自定义验证场景
可以单独为某个场景定义方法(方法的命名规范是scene
+场景名),并且对某些字段的规则重新设置,例如:
- 注意:场景名不区分大小写,且在调用的时候不能将驼峰写法转为下划线
class ArticleValidate extends Validate
{
constructor()
{
const rules = {
'id' : 'require|number',
'content' : 'require|length:1,2000',
'title' : 'require|chsDash|length:4,50'
}
const message = {
'id.require' : '缺少参数:文章Id',
'id.number' : '参数错误:文章Id',
'content.require' : '文章内容必须填写',
'content.length' : '文章长度为1~2000个字符',
'title.require' : '文章标题必须填写',
'title.chsDash' : '文章标题格式错误',
'title.length' : '文章标题长度为4~50个字符',
}
super(rules,message);
}
sceneEdit(){
return this.only(['id','content','title'])
.append('id','max:10000')
.remove('content','length')
.remove('title',null)
.append('title','require|chsDash|length:4,50')
}
}
说明
setSceneName
验证场景在调用check
方法以后会被重置,并不会对下一次check
生效
主要方法说明如下:
方法名 | 描述 |
---|---|
only | 场景需要验证的字段 |
remove | 移除场景中的字段的部分验证规则 |
append | 给场景中的字段需要追加验证规则 |