Sequentially

This constraint allows you to apply a set of rules that should be validated step-by-step, allowing to interrupt the validation once the first violation is raised.

この制約により、段階的に検証する必要がある一連のルールを適用でき、最初の違反が発生したときに検証を中断できます。

As an alternative in situations Sequentially cannot solve, you may consider using GroupSequence which allows more control.

Sequential で解決できない状況での代替手段として、より多くの制御を可能にする GroupSequence の使用を検討できます。

Basic Usage

Suppose that you have a Place object with an $address property which must match the following requirements:

次の要件に一致する必要がある $address プロパティを持つ Place オブジェクトがあるとします。
  • it's a non-blank string
    それは空白でない文字列です
  • of at least 10 chars long
    少なくとも 10 文字の長さ
  • with a specific format
    特定の形式で
  • and geolocalizable using an external service
    外部サービスを使用してジオローカライズ可能

In such situations, you may encounter three issues:

このような状況では、次の 3 つの問題が発生する可能性があります。
  • the Length or Regex constraints may fail hard with a UnexpectedValueException exception if the actual value is not a string, as enforced by Type.
    Type によって強制されるように、実際の値が文字列でない場合、Length または Regex 制約は UnexpectedValueExceptionexception で失敗する可能性があります。
  • you may end with multiple error messages for the same property.
    同じプロパティに対して複数のエラー メッセージが表示される場合があります。
  • you may perform a useless and heavy external call to geolocalize the address, while the format isn't valid.
    形式が有効でない場合、アドレスをジオローカライズするために無駄で重い外部呼び出しを実行する可能性があります。

You can validate each of these constraints sequentially to solve these issues:

これらの問題を解決するために、これらの各制約を順番に検証できます。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// src/Localization/Place.php
namespace App\Localization;

use App\Validator\Constraints as AcmeAssert;
use Symfony\Component\Validator\Constraints as Assert;

// IMPORTANT: nested attributes requires PHP 8.1 or higher
class Place
{
    #[Assert\Sequentially([
        new Assert\NotNull,
        new Assert\Type('string'),
        new Assert\Length(min: 10),
        new Assert\Regex(Place::ADDRESS_REGEX),
        new AcmeAssert\Geolocalizable,
    ])]
    public $address;
}

Options

constraints

type: array [default option]

タイプ: 配列 [デフォルト オプション]

This required option is the array of validation constraints that you want to apply sequentially.

この必須オプションは、順次適用する検証制約の配列です。

groups

type: array | string

タイプ: 配列 |ストリング

It defines the validation group or groups of this constraint. Read more about validation groups.

この制約の検証グループを定義します。検証グループの詳細を参照してください。

payload

type: mixed default: null

タイプ: 混合 デフォルト: null

This option can be used to attach arbitrary domain-specific data to a constraint. The configured payload is not used by the Validator component, but its processing is completely up to you.

このオプションは、任意のドメイン固有のデータを制約に添付するために使用できます。構成されたペイロードは Validator コンポーネントによって使用されませんが、その処理は完全にユーザー次第です。

For example, you may want to use several error levels to present failed constraints differently in the front-end depending on the severity of the error.

たとえば、いくつかのエラー レベルを使用して、エラーの重大度に応じて、失敗した制約をフロントエンドで異なる方法で提示することができます。