digicomp / settingvalidator
一个仅用于解决其他配置/验证.yaml中的验证器的Neos\Flow验证器
3.1.1
2023-02-18 23:01 UTC
Requires
- php: >=7.4
- neos/flow: ^6.3.5 | ^7.0 | ^8.0
Requires (Dev)
- phpunit/phpunit: ~8.5
README
此包允许使用新的配置类型配置验证器。
介绍
此包提供了 SettingsValidator
,它使用配置类型 Validation
来解决应用于值的验证器。它区分了应用于值本身及其属性的验证器。
解析验证配置
SettingsValidator
有一个 name
选项。如果设置了该值,则使用该名称来解析验证配置;否则,使用值的类型,这对于使用完全限定类名(FQCN)的对象尤其有用。
通过选项 name
解析
要按名称解析验证配置,只需使用选项 name
。
/** * @Flow\Validate(type="DigiComp.SettingValidator:Settings", options={"name"="MyNamedValidator"}) * @var MyObject */ protected MyObject $myObject;
SettingsValidator
将在 Validation.yaml
中搜索具有该名称的条目。
MyNamedValidator: ...
通过类型解析
要按类型解析验证配置,只需不要设置选项 name
。
/** * @Flow\Validate(type="DigiComp.SettingValidator:Settings") * @var MyObject */ protected MyObject $myObject;
SettingsValidator
将在 Validation.yaml
中搜索具有 MyObject
的 FQCN 的条目。
My\Package\Domain\Model\MyObject: ...
验证配置
self
和 properties
之间的区别
self
包含应用于值本身的验证器映射。 properties
包含您要验证的值的属性名称映射,每个条目都包含应用于该属性的验证器映射。
MyNamedValidator: self: ... properties: myProperty1: ... myProperty2: ...
配置验证器
要配置验证器,您使用验证器类型作为键,将选项作为该键的条目。如果验证器没有选项或使用了所有默认值,则将空映射作为选项设置。
MyNamedValidator: self: 'My.Package:SomeValidator': myOption: "myOptionValue" properties: myProperty1: 'My.Package:SomeOtherValidator': {} myProperty2: 'My.Package:SomeOtherValidator': {}
禁用验证器
要禁用验证器,需要将选项设置为 null
。
MyNamedValidator: self: 'My.Package:SomeValidator': ~
使用 SettingsValidator
SettingsValidator
可以用于减少 @Flow\Validate
注解的数量,并允许您覆盖其他包中的现有验证配置。
在属性上使用
旧 PHP 代码
/** * @Flow\Validate(type="My.Package:SomeValidator", options={"myOption"="myOptionValue"}) * @Flow\Validate(type="My.Package:SomeOtherValidator") * @var MyObject */ protected MyObject $myObject;
新 PHP 代码
/** * @Flow\Validate(type="DigiComp.SettingValidator:Settings", options={"name"="MyNamedValidator"}) * @var MyObject */ protected MyObject $myObject;
新验证配置
MyNamedValidator: self: 'My.Package:SomeValidator': myOption: "myOptionValue" 'My.Package:SomeOtherValidator': {}
在动作上使用
旧 PHP 代码
/** * @Flow\Validate(argumentName="myObject", type="My.Package:SomeValidator", options={"myOption"="myOptionValue"}) * @Flow\Validate(argumentName="myObject", type="My.Package:SomeOtherValidator") * @param MyObject $myObject */ public function myAction(MyObject $myObject) { ... }
新 PHP 代码
/** * @Flow\Validate(argumentName="myObject", type="DigiComp.SettingValidator:Settings", options={"name"="MyNamedValidator"}) * @param MyObject $myObject */ public function myAction(MyObject $myObject) { ... }
新验证配置
MyNamedValidator: self: 'My.Package:SomeValidator': myOption: "myOptionValue" 'My.Package:SomeOtherValidator': {}
在验证器配置中使用
您可以在验证器配置中使用 SettingsValidator
以轻松构建灵活的结构。
MyNamedValidator: properties: myProperty1: 'DigiComp.SettingValidator:Settings': name: "MyOtherNamedValidator" MyOtherNamedValidator: self: 'My.Package:SomeOtherValidator': {}
提供空验证器
在许多项目使用的代码中提供空验证器可能很有用。这样做可以确保在任何项目中都可以进行不同的验证。
/** * @Flow\Validate(argumentName="myObject", type="DigiComp.SettingValidator:Settings", options={"name"="MyNamedValidator"}) * @param MyObject $myObject */ public function myAction(MyObject $myObject) { ... }
MyNamedValidator: {}