用户输入经常需要进行数据过滤,或者叫预处理。比如你可能会需要先去掉 username 输入的收尾空格。 你可以通过使用过滤器
来实现此目的。
# 简单使用
系统内置了一些过滤方法,我们可以直接使用它
比如让user
字段使用trim过滤方法
const v = Validate.make({
'user' : 'require|mail|max:30',
})
v.setFilter({
'user' : 'trim'
})
多个过滤器可以使用半角逗号`,`分割开来,或者直接使用数组
# 扩展过滤器
如内置的过滤方法无法满足使用,系统提供了两种扩展方法(该方法必须为public类型)
# 使用过滤器加载动态过滤方法
import {Validate, BaseFilter} from "form-validate-wm";
实例化一个类,并继承BaseFilter
class NewFilter extends BaseFilter{
toStatus(value){
switch (value){
case '正常':
return '0'
case '到期':
return '1'
case '封禁':
return '-1'
}
return value;
}
}
或者可以使用过滤器的extend
方法来加载
const filter = new BaseFilter()
filter.extend("toStatus",function (value) {
switch (value){
case '正常':
return '0'
case '到期':
return '1'
case '封禁':
return '-1'
}
return value;
})
使用register
方法让验证器使用指定的过滤器
const v = new Validate();
v.register(new NewFilter());
也可以在验证器实例化方法中使用this.register(new NewFilter());
使用方法
v.setFilter({
'user' : 'toStatus'
})
# 使用验证器加载动态过滤方法
使用验证器定义一个过滤方法,(方法的命名规范是filter+场景名),并且对某些字段的规则重新设置,例如:
注意:场景名不区分大小写,且在调用的时候不能将驼峰写法转为下划线
const v = new Validate()
v.extend("filterToStatus",function (value) {
switch (value){
case '正常':
return '0'
case '到期':
return '1'
case '封禁':
return '-1'
}
return value;
})
v.setFilter({
'user' : 'toStatus'
})
# 动态使用
如果不想单独实例化一个过滤器,可以使用获取器的getGetter
来取得默认过滤器,此方式获取的过滤器无需注册,且具备上诉用法
const v = new Validate()
const filter = v.getGetter()
filter.extend("toStatus",function (value) {
switch (value){
case '正常':
return '0'
case '到期':
return '1'
case '封禁':
return '-1'
}
return value;
})
# 获取过滤后的数据
有时候我们想直接把过滤后的数据传入表单请求或者作其他用途,我们可以使用getData
方法来取回验证成功后的数据
仅在check通过后有效
此数据经过了过滤器和获取器的处理
const v = new Validate();
v.getData();
# 取消过滤器
当我们想取消所有的过滤方法的时候,可以使用
const v = new Validate();
v.setFilter(null)