要使用验证器,需要安装验证器组件 ```shell composer require max/validator:dev-master ``` > 以下文档没有更新,以实际使用为准。使用throwAble方法可以设置是否抛出异常 > 需要验证的数据必须是数组,比如通过Request类方法传入数组获取的数组。 ## 基础验证器 ~~~ public function test() { $data = Request::post(); $vali = Max\Facade\Validate::rule([ 'username' => ['required' => true, 'max' => 10, 'regexp' => '\w+'] ])->check($data); if (true !== $vali) { exit($vali); } } ~~~ 验证器操作必须按照如上代码写,可以在`App\Validate`类中添加方法例如`_checkUservali` ,验证成功返回true,失败将消息新增到成员属性$message数组后返回false。之后使用rule方法的时候就可以使用rule(\['username' => \['uservali' => 1\]) ;验证username字段。当一个字段验证失败后就不会再验证其他字段了! 验证器支持全部验证,只需要给check方法的第二个参数传入true即可开启全部验证,非批量验证失败返回消息字符串,批量验证失败返回消息索引数组。 > 默认可用的验证器有max,min,length,enum,required,regexp,bool,confirm `_checkBool` 当值为`'on', 'yes', 'true', true, 1, '1'`时为真,相反为假,在验证规则中应该传入true或者false 在验证`regexp` 的时候需要编写完整验证正则表达式包括定界符,例如:`/\d+@\w+\.\w{3}/i` 注意这里验证使用了`preg_match`,所以在编写正则表达式的时候应该注意,例如不要使用模式修正符g ## 独立验证 添加了独立验证,你可以在任何可以`composer`自动加载的位置添加验证器类例如`UserVali`,并继承`App\Validate`,在该类中添加验证规则$rule ~~~ protected array $rule = [ 'username' => ['required' => true] ]; ~~~ 可以使用助手函数`validate()`进行验证 ~~~ validate($data, UserVali::class); ~~~ > 以下文档没有更新,不要参考 第一个参数为需要验证的数据,第二个参数为验证器类名完整字符串,注意这里追加的规则时使用`+`语法将两个数组合并,可能导致覆盖,独立验证可以设置属性$checkAll用来设置是否是全部验证,当`$checkAll` 为true时开启批量验证,否则一旦有验证失败的条目都会结束验证。独立验证可以使用连贯操作和追加删除操作,例如 ~~~ $vali = $this->validate(UserVali::class,$data)->min(['a' => 1])->remove(['password' => ['required']])->append(['password' => ['min' => 1]])->check(); ~~~ 验证器随意增加或者删除验证规则,例如: ~~~ Validate::rule(['a' => ['required' => true])->append(['a' => ['max' => 2,'min' => 1]])->append(['b' => ['required' => true])->remove('a')->remove(['a' => ['required','max'])->remove(['a' => 'min'])->check($data); ~~~ ## 验证器还可以使用连贯操作 ~~~ $vali = Validate::data($data)->max(['a' => 10])->required(['a' => true,'b' => true)->check(); ~~~ 或者使用 ~~~ (new Validate($data))->max('a',10)->check(); ~~~ 或者使用 ~~~ (new Validate())->max('a',10)->check($data); ~~~ 注意:这的`Validate`可以是任意你新建的继承了`App\Validate`或者`\Max\Validate` 的类,只是前者会包含你自定义的验证规则,后则会不包含,并且如果在你的验证器类中存在rule属性的设置就不再需要传入rule规则了,直接使用check即可。如果验证成功会返回true,否则返回带有错误信息的数组,使用闭包验证时func方法第一个参数传入要验证的字段,第二个参数传入闭包,第三个参数可选传入传递给闭包的参数列表数组。 ## 验证提示 可以自定义验证规则的提示,只需要给属性notice设置和验证规则类似的数组,并且将验证的限定值改为提示信息即可。 > 验证器支持设置验证失败抛出异常,只需将独立验证的属性throwAble设置为true,或者给check方法传入第三个参数true,即可开启抛出异常,批量验证失败抛出异常信息为json。 框架验证器内置诸多规则 required 参数必须 max min length regexp bool in confirm