自定义验证
定义类型
acr 的验证规则都是在某种类型之上的,在开始定义规则之前,首先要定义一个类型。我们也提供了一些默认类型。
定义类型使用 acr.type
方法,这个方法接受两个参数,name
和 options
。
name
是一个唯一字符串,因此,即使你多次定义同一个名称的类型,得到的都是同一个实例。
options
是一个对象,具体的内容还没有确定,这块目前只是一个预留选项。
自定义验证
我们业务中可能有一些重复使用的验证规则,这个时候我们可以定义一个规则来重复使用。
比如我们可能需要判断用户提交的日期是否是闰年。
使用
规则定义方法 define
接受两个参数。
name
规则名称,在同一种类型下唯一,重复定义时,后面的定义会覆盖前面的。
rule
规则闭包,规则闭包接受 两个参数,分别是 value
和 一些辅助验证的数据 context
。详情参考规则闭包
规则闭包
规则闭包接受 两个参数,分别是 value
和 一些辅助验证的数据 context
value
是此验证链上的值。
context
是用于辅助验证的数据。目前包含以下结构:
data
是此次验证的全部数据,某些情况下,可能需要获取相关联的数据来进行验证。path
此次验证的路径名称。identify
字符串,可以视为是规则的唯一标识,由type和rule的名称组成。比如上面的日期验证,identify 就是 date.leapYear ,有时候参数发生错误为了便于快速定位问题,可以附带进错误提示。params
数组,验证时传递的全部参数。我们希望所有的规则的最后一个参数都是一个可选的 message 参数。context
上下文,等于定义 acr 时传递的 context 内容。参考 配置
闭包的返回值可以是多种类型。但除了 string
,false
之外的返回值,都会认为是验证成功。
如果返回一个 string
,会将这个 string
作为错误的 message
。
Last updated