Choice

This constraint is used to ensure that the given value is one of a given set of valid choices. It can also be used to validate that each item in an array of items is one of those valid choices.

この制約は、指定された値が指定された有効な選択肢のセットの 1 つであることを保証するために使用されます。また、アイテムの配列内の各アイテムが有効な選択肢の 1 つであることを検証するためにも使用できます。
Applies to property or method
Class Choice
Validator ChoiceValidator

Basic Usage

The basic idea of this constraint is that you supply it with an array of valid values (this can be done in several ways) and it validates that the value of the given property exists in that array.

この制約の基本的な考え方は、有効な値の配列を指定して (これはいくつかの方法で行うことができます)、指定されたプロパティの値がその配列に存在することを検証するというものです。

If your valid choice list is simple, you can pass them in directly via the choices option:

有効な選択リストが単純な場合は、choices オプションを介して直接渡すことができます。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    const GENRES = ['fiction', 'non-fiction'];

    #[Assert\Choice(['New York', 'Berlin', 'Tokyo'])]
    protected $city;

    #[Assert\Choice(choices: Author::GENRES, message: 'Choose a valid genre.')]
    protected $genre;
}

Supplying the Choices with a Callback Function

You can also use a callback function to specify your options. This is useful if you want to keep your choices in some central location so that, for example, you can access those choices for validation or for building a select form element:

コールバック関数を使用してオプションを指定することもできます。これは、選択肢を中央の場所に保持したい場合に便利です。たとえば、検証や選択フォーム要素の構築のために選択肢にアクセスできます。
1
2
3
4
5
6
7
8
9
10
// src/Entity/Author.php
namespace App\Entity;

class Author
{
    public static function getGenres()
    {
        return ['fiction', 'non-fiction'];
    }
}

You can pass the name of this method to the callback option of the Choice constraint.

このメソッドの名前を Choiceconstraint の callback オプションに渡すことができます。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Choice(callback: 'getGenres')]
    protected $genre;
}

If the callback is defined in a different class and is static, for example App\Entity\Genre, you can pass the class name and the method as an array.

コールバックが別のクラスで定義され、App\Entity\Genre などの静的である場合、クラス名とメソッドを配列として渡すことができます。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
// src/Entity/Author.php
namespace App\Entity;

use App\Entity\Genre
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Choice(callback: [Genre::class, 'getGenres'])]
    protected $genre;
}

Available Options

callback

type: string|array|Closure

タイプ: 文字列|配列|閉鎖

This is a callback method that can be used instead of the choices option to return the choices array. See Supplying the Choices with a Callback Function for details on its usage.

これは、choices オプションの代わりに使用して、choices 配列を返すコールバック メソッドです。使用方法の詳細については、コールバック関数による選択肢の提供を参照してください。

choices

type: array [default option]

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

A required option (unless callback is specified) - this is the array of options that should be considered in the valid set. The input value will be matched against this array.

必須オプション (コールバックが指定されていない場合) - これは、有効なセットで考慮する必要があるオプションの配列です。入力値は、この配列に対して照合されます。

groups

type: array | string

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

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

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

max

type: integer

タイプ: 整数

If the multiple option is true, then you can use the max option to force no more than XX number of values to be selected. For example, if max is 3, but the input array contains 4 valid items, the validation will fail.

multiple オプションが true の場合、max オプションを使用して、XX 個以下の値を強制的に選択することができます。たとえば、max が 3 であるが、入力配列に 4 つの有効なアイテムが含まれている場合、検証は失敗します。

maxMessage

type: string default: You must select at most {{ limit }} choices.

タイプ: 文字列 デフォルト: 最大 {{ limit }} 個の選択肢を選択する必要があります。

This is the validation error message that's displayed when the user chooses too many options per the max option.

これは、ユーザーが max オプションごとにあまりにも多くのオプションを選択した場合に表示される検証エラー メッセージです。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ choices }} A comma-separated list of available choices
{{ value }} The current (invalid) value

message

type: string default: The value you selected is not a valid choice.

タイプ: 文字列 デフォルト: 選択した値は有効な選択ではありません。

This is the message that you will receive if the multiple option is set to false and the underlying value is not in the valid array of choices.

これは、multiple オプションが false に設定され、基になる値が有効な選択肢の配列にない場合に受け取るメッセージです。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ choices }} A comma-separated list of available choices
{{ value }} The current (invalid) value

min

type: integer

タイプ: 整数

If the multiple option is true, then you can use the min option to force at least XX number of values to be selected. For example, if min is 3, but the input array only contains 2 valid items, the validation will fail.

multiple オプションが true の場合、min オプションを使用して、少なくとも XX 個の値を強制的に選択できます。たとえば、min が 3 であるが、入力配列に有効なアイテムが 2 つしか含まれていない場合、検証は失敗します。

minMessage

type: string default: You must select at least {{ limit }} choices.

タイプ: 文字列 デフォルト: 少なくとも {{ limit }} 個の選択肢を選択する必要があります。

This is the validation error message that's displayed when the user chooses too few choices per the min option.

これは、ユーザーが min オプションごとに選択した選択肢が少なすぎる場合に表示される検証エラー メッセージです。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ choices }} A comma-separated list of available choices
{{ value }} The current (invalid) value

multiple

type: boolean default: false

タイプ: ブール デフォルト: false

If this option is true, the input value is expected to be an array instead of a single, scalar value. The constraint will check that each value of the input array can be found in the array of valid choices. If even one of the input values cannot be found, the validation will fail.

このオプションが true の場合、入力値は単一のスカラー値ではなく配列であると想定されます。制約は、入力配列の各値が有効な選択肢の配列で見つかることを確認します。入力値が 1 つでも見つからない場合、検証は失敗します。

multipleMessage

type: string default: One or more of the given values is invalid.

タイプ: 文字列 デフォルト: 指定された値の 1 つ以上が無効です。

This is the message that you will receive if the multiple option is set to true and one of the values on the underlying array being checked is not in the array of valid choices.

これは、multiple オプションが true に設定されていて、チェックされている基になる配列の値の 1 つが有効な選択肢の配列にない場合に受け取るメッセージです。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ value }} The current (invalid) value
{{ label }} Corresponding form field label

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.

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