|
12 | 12 | - 支持前置验证检查, 自定义如何判断非空 |
13 | 13 | - 支持将规则按场景进行分组设置。或者部分验证 |
14 | 14 | - 支持在进行验证前对值使用过滤器进行净化过滤[内置过滤器](#built-in-filters) |
| 15 | +- 支持在进行验证前置处理和后置处理[独立验证处理](#on-in-Validation) |
15 | 16 | - 支持自定义每个验证的错误消息,字段翻译,消息翻译,支持默认值 |
16 | 17 | - 支持基本的数组检查,数组的子级(`'goods.apple'`)值检查, 通配符的子级检查 (`'users.*.id' 'goods.*'`) |
17 | 18 | - 方便的获取错误信息,验证后的安全数据获取(只会收集有规则检查过的数据) |
@@ -110,6 +111,18 @@ use Inhere\Validate\Validation; |
110 | 111 |
|
111 | 112 | class PageRequest extends Validation |
112 | 113 | { |
| 114 | + # 进行验证前处理,返回false则停止验证,但没有错误信息,可以在逻辑中调用 addError 增加错误信息 |
| 115 | + public function beforeValidate(): bool |
| 116 | + { |
| 117 | + return true; |
| 118 | + } |
| 119 | + # 进行验证后处理,该干啥干啥 |
| 120 | + public function afterValidate(): bool |
| 121 | + { |
| 122 | + return true; |
| 123 | + } |
| 124 | + |
| 125 | + |
113 | 126 | public function rules(): array |
114 | 127 | { |
115 | 128 | return [ |
@@ -347,6 +360,48 @@ class AdemoValidator extends \Inhere\Validate\Validator\AbstractValidator |
347 | 360 | ['status', new AdemoValidator()] |
348 | 361 | ``` |
349 | 362 |
|
| 363 | +<a name="on-in-Validation"></a> |
| 364 | +## **验证前置/后置**处理 |
| 365 | + |
| 366 | +* 方式1: 在 `Validation` 中 |
| 367 | + |
| 368 | +> 该方法与`onBeforeValidate`&`onAfterValidate`有冲突 |
| 369 | +
|
| 370 | +```php |
| 371 | +use Inhere\Validate\Validation; |
| 372 | + |
| 373 | +class PageValidation extends Validation |
| 374 | +{ |
| 375 | + # 进行验证前处理,返回false则停止验证,但没有错误信息,可以在逻辑中调用 addError 增加错误信息 |
| 376 | + public function beforeValidate(): bool |
| 377 | + { |
| 378 | + return true; |
| 379 | + } |
| 380 | + # 进行验证后处理,该干啥干啥 |
| 381 | + public function afterValidate(): bool |
| 382 | + { |
| 383 | + return true; |
| 384 | + } |
| 385 | +} |
| 386 | +``` |
| 387 | +* 方式2: `onBeforeValidate`&`onAfterValidate` |
| 388 | +```php |
| 389 | +use Inhere\Validate\Validation; |
| 390 | + |
| 391 | +$v = Validation::make(['name' => 'inhere'], [ |
| 392 | + ['name', 'string', 'min' => 3, 'filter' => 'trim|upper'] |
| 393 | +]); |
| 394 | + |
| 395 | +$v->onBeforeValidate(function (Validation $v) { |
| 396 | + return true; |
| 397 | +}); |
| 398 | + |
| 399 | +$v->onAfterValidate(function (Validation $v) { |
| 400 | + |
| 401 | +}); |
| 402 | + |
| 403 | +$v->validate(); |
| 404 | +``` |
350 | 405 |
|
351 | 406 | ## 一个完整的规则示例 |
352 | 407 |
|
|
0 commit comments