1717- 支持自定义每个验证的错误消息,字段翻译,消息翻译,支持默认值
1818- 支持基本的数组检查,数组的子级(` 'goods.apple' ` )值检查, 通配符的子级检查 (` 'users.*.id' 'goods.*' ` )
1919- 方便的获取错误信息,验证后的安全数据获取(只会收集有规则检查过的数据)
20- - 已经内置了60多个常用的验证器 [ 内置验证器] ( #built-in-validators )
20+ - 已经内置了大量的常用的验证器 [ 内置验证器] ( #built-in-validators )
2121- 规则设置参考 ` yii ` , ` laravel ` , ` Respect/Validation `
2222- 独立的过滤器 ` Inhere\Validate\Filter\Filtration ` ,可单独用于数据过滤
2323
@@ -62,7 +62,7 @@ validate 同时支持两种规则配置方式,对应了两种规则的收集
6262
6363## 安装
6464
65- ``` php
65+ ``` bash
6666composer require inhere/php-validate
6767// composer require inhere/php-validate ^2.2
6868```
@@ -135,19 +135,19 @@ class PageRequest extends Validation
135135 // 4<= tagId <=567
136136 ['tagId', 'size', 'min'=>4, 'max'=>567, 'filter' => 'int'],
137137
138- // title length >= 40. 注意只需一个参数的验证,无需加 key, 如这里的 40
139- ['title', 'min', 40, 'filter' => 'trim'],
138+ // title length >= 40. 注意只需一个参数的验证,无需加 key, 如这里的 40
139+ ['title', 'min', 40, 'filter' => 'trim'],
140140
141- // 大于 0
142- ['freeTime', 'number'],
141+ // 大于 0
142+ ['freeTime', 'number'],
143143
144144 // 含有前置条件
145145 ['tagId', 'number', 'when' => function($data) {
146146 return isset($data['status']) && $data['status'] > 2;
147147 }],
148148
149149 // 在验证前会先过滤转换为 int。并且仅会在指明场景名为 'scene1' 时规则有效
150- ['userId', 'number', 'on' => 'scene1', 'filter' => 'int'],
150+ ['userId', 'number', 'on' => 'scene1', 'filter' => 'int'],
151151 ['username', 'string', 'on' => 'scene2', 'filter' => 'trim'],
152152
153153 // 使用自定义正则表达式
@@ -164,8 +164,8 @@ class PageRequest extends Validation
164164 return false;
165165 }],
166166
167- // 标记字段是安全可靠的 无需验证
168- ['createdAt, updatedAt', 'safe'],
167+ // 标记字段是安全可靠的 无需验证
168+ ['createdAt, updatedAt', 'safe'],
169169 ];
170170 }
171171
@@ -308,11 +308,20 @@ class UserController
308308
309309## 添加自定义验证器
310310
311- - ** 方式1** 在继承了 ` Inhere\Validate\Validation ` 的子类添加验证方法. 请看上面的 [ 使用方式1] ( #how-to-use2 )
311+ 底层调用验证器是支持:
312+
313+ - 一个闭包
314+ - 一个函数名称
315+ - 一个当前验证类的方法名
316+ - 在继承了 ` Inhere\Validate\Validation ` 的子类添加验证方法. 请看上面的 [ 使用方式1] ( #how-to-use2 )
317+ - 一个通过 ` Validation->addValidator() ` 添加的临时验证器
318+ - 一个通过 ` Validator\UserValidators::set ` 注册的全局验证器
319+ - 一个实现了 ` Validator\ValidatorInterface ` 的对象
320+ - 一个可调用的对象(有 ` __invoke ` 方法)
312321
313322> 注意: 写在当前类里的验证器方法必须带有后缀 ` Validator ` , 以防止对内部的其他的方法造成干扰
314323
315- - ** 方式2 ** 通过 ` Validation::addValidator() ` 添加自定义验证器. e.g:
324+ ### 示例
316325
317326``` php
318327$v = Validation::make($_POST,[
@@ -329,7 +338,7 @@ $v = Validation::make($_POST,[
329338 ->validate();
330339```
331340
332- - ** 方式3 ** 直接写闭包进行验证 e.g:
341+ 直接写闭包进行验证 e.g:
333342
334343``` php
335344 ['status', function($status) { // 第一个参数是字段值。最后一个参数总是 $data
@@ -341,16 +350,14 @@ $v = Validation::make($_POST,[
341350 }]
342351```
343352
344- - ** 方式4 ** 定义一个闭包验证类进行验证,这种方法能提高验证方法的复用性
353+ 定义一个闭包验证类进行验证,这种方法能提高验证方法的复用性
345354
346355> 别忘了继承 ` \Inhere\Validate\Validator\AbstractValidator ` ,和实现必须方法` validate `
347356
348357``` php
349-
350358class AdemoValidator extends \Inhere\Validate\Validator\AbstractValidator
351359{
352360
353-
354361 public function validate($value, $data): bool
355362 {
356363 if ($value == 1) {
@@ -361,7 +368,8 @@ class AdemoValidator extends \Inhere\Validate\Validator\AbstractValidator
361368
362369}
363370
364- ['status', new AdemoValidator()]
371+ // 使用
372+ ['status', new AdemoValidator()],
365373```
366374
367375<a name =" on-in-Validation " ></a >
0 commit comments