用户输入经常需要进行数据过滤,或者叫预处理。比如你可能会需要先去掉 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)