vjik / yii-validator-scenarios
Yii Validator 的场景功能
1.0.0
2023-02-22 13:25 UTC
Requires
- php: ^8.0
- yiisoft/validator: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- roave/infection-static-analysis-plugin: ^1.25
- vimeo/psalm: ^4.30|^5.1
This package is auto-updated.
Last update: 2024-09-22 17:01:25 UTC
README
Yii Validator Scenarios
该包提供了实现 Yii Validator 场景功能的验证规则 On
。
要求
- PHP 8.0 或更高版本。
安装
可以使用 composer 安装此包。
composer require vjik/yii-validator-scenarios
一般用法
场景功能通过规则 On
和验证上下文参数实现。
配置规则
use Vjik\Yii\ValidatorScenarios\On; use Yiisoft\Validator\Rule\Email; use Yiisoft\Validator\Rule\Length; use Yiisoft\Validator\Rule\Required; final class UserDto { public function __construct( #[On( 'register', [new Required(), new Length(min: 7, max: 10)] )] public string $name, #[Required] #[Email] public string $email, #[On( ['login', 'register'], [new Required(), new Length(min: 8)], )] public string $password, ) { } }
或者相同,没有属性
use Vjik\Yii\ValidatorScenarios\On; use Yiisoft\Validator\Rule\Email; use Yiisoft\Validator\Rule\Length; use Yiisoft\Validator\Rule\Required; use Yiisoft\Validator\RulesProviderInterface; final class UserDto implements RulesProviderInterface { public function __construct( public string $name, public string $email, public string $password, ) { } public function getRules(): iterable { return [ 'name' => new On( 'register', [new Required(), new Length(min: 7, max: 10)], ), 'email' => [new Required(), new Email()], 'password' => new On( ['login', 'register'], [new Required(), new Length(min: 8)], ), ]; } }
通过上下文将场景传递给验证器
use Yiisoft\Validator\ValidationContext; use Yiisoft\Validator\Validator; $result = (new Validator())->validate( $userDto, context: new ValidationContext([ On::SCENARIO_PARAMETER => $scenario, ]), );
根据场景应用规则
register
login
无场景
On
规则参数
$scenario
规则 $rules
所在的场景。如果规则始终使用,则为 null
。默认为 null
。
$rules
根据 $scenario
应用的规则。默认为空数组。
$not
是否应反转场景检查。当此参数设置为 true
时,验证器检查当前场景是否在 $scenario
中,如果不是,则应用 $rules
。默认为 false
。
$skipOnEmpty
是否跳过 $rules
的空值,以及将哪些值视为空值。默认为 null
。
$skipOnError
一个布尔值,其中 true
表示在前面一个验证出错时跳过 $rules
,而 false
表示不跳过。默认为 false
。
$when
允许仅在特定条件下应用 $rules
的闭包。默认为 null
。
测试
单元测试
该包使用 PHPUnit 进行测试。要运行测试
./vendor/bin/phpunit
突变测试
该包使用 Infection 突变框架和 Infection 静态分析插件 进行测试。要运行它
./vendor/bin/roave-infection-static-analysis-plugin
静态分析
使用 Psalm 对代码进行静态分析。要运行静态分析
./vendor/bin/psalm
许可证
Yii Validator Scenarios 是免费软件。它根据 BSD 许可证的条款发布。有关更多信息,请参阅 LICENSE
。