Timezone

Дата обновления перевода 2023-01-13

Timezone

Валидирует, что значение является валидным идентификатором часового пояса (например, Europe/Paris).

??????????? ? ???????? ??? ??????
????? Timezone
????????? TimezoneValidator

Базовое использование

Представьте, что у вас есть класс UserSettings, с полем timezone, которое является строкой, содержащей любой из PHP-идентификаторов часовых поясов (например, America/New_York):

  • Attributes
  • YAML
  • XML
  • PHP
1
2
3
4
5
6
7
8
9
10
// src/Entity/UserSettings.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class UserSettings
{
    #[Assert\Timezone]
    protected $timezone;
}

Note

As with most of the other constraints, null and empty strings are considered valid values. This is to allow them to be optional values. If the value is mandatory, a common solution is to combine this constraint with NotBlank.

Опции

countryCode

тип: string по умолчанию: null

Если опция zone установлена как \DateTimeZone::PER_COUNTRY, эта опция ограничивает валидные идентификаторы часовых поясов, до тех, которые принадлежат заданной стране.

Значение этой опции должно быть валидным кодом страны ISO 3166-1 alpha-2 (например, CN для Китая).

groups

type: array | string

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

intlCompatible

тип: boolean по умолчанию: false

Это ограничение считает валидными как PHP-идентификаторы часовых поясов, так и часовые пояса ICU , предоставленные компонентом Intl от Symfony.

Однако, часовые пояса, предоставленные компонентом Intl, могут отличаться от часовых поясов, предоставленных PHP-расширением Intl (так как они используют разные версии ICU). Если эта опция установлена как true, данное ограничение считает валидными только значения, совместимые с PHP-методом \IntlTimeZone::createTimeZone().

message

тип: string по умолчанию: This value is not a valid timezone.

Это сообщение отображается, если базовые данные не являются валидным идентификатором часового пояса.

Вы можете использовать следующие параметры в этом сообщении:

???????? ????????
{{ value }} ??????? (??????????) ????????
{{ label }} ??????????????? ????? ???? ?????

payload

тип: mixed по умолчанию: null

Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.

Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.

zone

тип: string по умолчанию: \DateTimeZone::ALL

Установите эту опцию в одну из следующих констант, чтобы ограничить валидные идентификаторы часовых поясов до тех, которые принадлежат этой географической зоне:

  • \DateTimeZone::AFRICA
  • \DateTimeZone::AMERICA
  • \DateTimeZone::ANTARCTICA
  • \DateTimeZone::ARCTIC
  • \DateTimeZone::ASIA
  • \DateTimeZone::ATLANTIC
  • \DateTimeZone::AUSTRALIA
  • \DateTimeZone::EUROPE
  • \DateTimeZone::INDIAN
  • \DateTimeZone::PACIFIC

Кроме того, если специальные значения зон:

  • \DateTimeZone::ALL принимает любой часовой пояс, кроме устаревших;
  • \DateTimeZone::ALL_WITH_BC принимает любой часовой пояс, включая устаревшие;
  • \DateTimeZone::PER_COUNTRY ограничивает валидные часовые пояса по определенной стране (которая определяется с использованием опции countryCode).