digicomp/settingvalidator

一个仅用于解决其他配置/验证.yaml中的验证器的Neos\Flow验证器

3.1.1 2023-02-18 23:01 UTC

This package is auto-updated.

Last update: 2024-09-19 02:08:46 UTC


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:
  ...

验证配置

selfproperties 之间的区别

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: {}