Range

Validates that a given number or DateTime object is between some minimum and maximum.

指定された数値または DateTime オブジェクトが最小値と最大値の間にあることを検証します。
Applies to property or method
Class Range
Validator RangeValidator

Basic Usage

To verify that the height field of a class is between 120 and 180, you might add the following:

クラスの高さフィールドが 120 ~ 180 であることを確認するには、次を追加します。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// src/Entity/Participant.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Participant
{
    #[Assert\Range(
        min: 120,
        max: 180,
        notInRangeMessage: 'You must be between {{ min }}cm and {{ max }}cm tall to enter',
    )]
    protected $height;
}

Date Ranges

This constraint can be used to compare DateTime objects against date ranges. The minimum and maximum date of the range should be given as any date string accepted by the DateTime constructor. For example, you could check that a date must lie within the current year like this:

この制約は、DateTime オブジェクトを日付範囲と比較するために使用できます。範囲の最小日付と最大日付は、DateTime コンストラクターによって受け入れられる任意の日付文字列として指定する必要があります。たとえば、次のように adate が現在の年内にある必要があることを確認できます。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Event.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Event
{
    #[Assert\Range(
        min: 'first day of January',
        max: 'first day of January next year',
    )]
    protected $startDate;
}

Be aware that PHP will use the server's configured timezone to interpret these dates. If you want to fix the timezone, append it to the date string:

PHP はサーバーの設定されたタイムゾーンを使用してこれらの日付を解釈することに注意してください。タイムゾーンを修正する場合は、日付文字列に追加します。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Event.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Event
{
    #[Assert\Range(
        min: 'first day of January UTC',
        max: 'first day of January next year UTC',
    )]
    protected $startDate;
}

The DateTime class also accepts relative dates or times. For example, you can check that a delivery date starts within the next five hours like this:

DateTime クラスは、相対的な日付または時刻も受け入れます。たとえば、次のように、配達日が次の 5 時間以内に開始されることを確認できます。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Order.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Order
{
    #[Assert\Range(
        min: 'now',
        max: '+5 hours',
    )]
    protected $deliveryDate;
}

Options

groups

type: array | string

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

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

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

invalidDateTimeMessage

type: string default: This value should be a valid number.

タイプ: 文字列 デフォルト: この値は有効な数値でなければなりません。

The message displayed when the min and max values are PHP datetimes but the given value is not.

最小値と最大値が PHP の日時であるが、指定された値がそうでない場合に表示されるメッセージ。

You can use the following parameters in this message:

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

invalidMessage

type: string default: This value should be a valid number.

タイプ: 文字列 デフォルト: この値は有効な数値でなければなりません。

The message displayed when the min and max values are numeric (per the is_numeric PHP function) but the given value is not.

最小値と最大値が数値 (is_numeric PHP 関数による) であるが、指定された値がそうでない場合に表示されるメッセージ。

You can use the following parameters in this message:

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

max

type: number or string (date format)

タイプ: 数値または文字列 (日付形式)

This required option is the "max" value. Validation will fail if the given value is greater than this max value.

この必須オプションは「最大」値です。指定された値がこの最大値より大きい場合、検証は失敗します。

maxMessage

type: string default: This value should be {{ limit }} or less.

タイプ: 文字列 デフォルト: この値は {{ limit }} 以下である必要があります。

The message that will be shown if the underlying value is more than the max option, and no min option has been defined (if both are defined, use notInRangeMessage).

基になる値が max オプションを超え、min オプションが定義されていない場合に表示されるメッセージ (両方が定義されている場合は、notInRangeMes​​sage を使用)。

You can use the following parameters in this message:

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

maxPropertyPath

type: string

タイプ: 文字列

It defines the object property whose value is used as max option.

値が max オプションとして使用されるオブジェクト プロパティを定義します。

For example, if you want to compare the $submittedDate property of some object with regard to the $deadline property of the same object, use maxPropertyPath="deadline" in the range constraint of $submittedDate.

たとえば、あるオブジェクトの $submittedDate プロパティを同じオブジェクトの $deadline プロパティと比較する場合、$submittedDate の範囲制約で maxPropertyPath="deadline" を使用します。

Tip

ヒント

When using this option, its value is available in error messages as the {{ max_limit_path }} placeholder. Although it's not intended to include it in the error messages displayed to end users, it's useful when using APIs for doing any mapping logic on client-side.

このオプションを使用する場合、その値はエラー メッセージで {{ max_limit_path }} プレースホルダーとして利用できます。エンド ユーザーに表示されるエラー メッセージに含めることは意図されていませんが、クライアント側でマッピング ロジックを実行するために API を使用する場合に役立ちます。

min

type: number or string (date format)

タイプ: 数値または文字列 (日付形式)

This required option is the "min" value. Validation will fail if the given value is less than this min value.

この必須オプションは「最小」値です。指定された値がこの最小値より小さい場合、検証は失敗します。

minMessage

type: string default: This value should be {{ limit }} or more.

タイプ: 文字列 デフォルト: この値は {{ limit }} 以上である必要があります。

The message that will be shown if the underlying value is less than the min option, and no max option has been defined (if both are defined, use notInRangeMessage).

基になる値が themin オプションより小さく、max オプションが定義されていない場合に表示されるメッセージ (両方が定義されている場合は、notInRangeMes​​sage を使用)。

You can use the following parameters in this message:

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

minPropertyPath

type: string

タイプ: 文字列

It defines the object property whose value is used as min option.

値が min オプションとして使用されるオブジェクト プロパティを定義します。

For example, if you want to compare the $endDate property of some object with regard to the $startDate property of the same object, use minPropertyPath="startDate" in the range constraint of $endDate.

たとえば、あるオブジェクトの $endDate プロパティを同じオブジェクトの $startDate プロパティと比較する場合、$endDate の範囲制約で minPropertyPath="startDate" を使用します。

Tip

ヒント

When using this option, its value is available in error messages as the {{ min_limit_path }} placeholder. Although it's not intended to include it in the error messages displayed to end users, it's useful when using APIs for doing any mapping logic on client-side.

このオプションを使用する場合、その値はエラー メッセージで {{ min_limit_path }} プレースホルダーとして利用できます。エンド ユーザーに表示されるエラー メッセージに含めることは意図されていませんが、クライアント側でマッピング ロジックを実行するために API を使用する場合に役立ちます。

notInRangeMessage

type: string default: This value should be between {{ min }} and {{ max }}.

タイプ: 文字列 デフォルト: この値は {{ min }} と {{ max }} の間である必要があります。

The message that will be shown if the underlying value is less than the min option or greater than the max option.

基礎となる値が themin オプションよりも小さい場合、または max オプションよりも大きい場合に表示されるメッセージ。

You can use the following parameters in this message:

このメッセージでは、次のパラメーターを使用できます。
Parameter Description
{{ max }} The upper limit
{{ min }} The lower limit
{{ value }} The current (invalid) value

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.

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