Timezone

Дата оновлення перекладу 2022-12-20

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;
}

Дата оновлення перекладу 2022-12-20

Note

Як і в більшості інших обмежень, null та порожні рядки вважаються валідними значеннями. Це для того, щоб дозволити їм бути опціональними значеннями. Якщо значення є обовʼязковим, розповсюдженим рішенням буде комбінація цього обмеження з NotBlank.

Опції

countryCode

тип: string за замовчуванням: null

Якщо опція zone встановлена як \DateTimeZone::PER_COUNTRY, ця опція обмежує валідні ідентифікатори часових поясів до тих, що належать заданій країні.

Значення цієї опції має бути валідним кодом країни ISO 3166-1 alpha-2 (наприклад, CN для Китаю).

Дата оновлення перекладу 2022-12-20

groups

тип: array | string

Визначаэ групу або групи валідації обмеження. Прочитайте більше про групи валідації.

intlCompatible

тип: boolean за замовчуванням: false

Це обмеження вважає валідними як ідентифікатори часових поясів PHP, так і часові пояси ICU , надані компонентом Symfony Intl

Однак, часові пояси, надані компонентом Intl, можуть відрізнятися від часових поясів, наданих PHP-розширенням Intl (так як вони використовують різні версії ICU). Якщо ця опція встановлена як true, це обмеження вважає валідними лише знчення, сумісні з методом PHP \IntlTimeZone::createTimeZone().

message

type: string за замовчуванням: Це значення не є валідним часовим поясом.

Це повідомлення відображається, якщо вихідні дані не є валідним ідентифікатором часового поясу.

Ви можете використати наступні параметри у цьому повідомленні:

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

Дата оновлення перекладу 2022-12-20

payload

тип: mixed за замовчуванням: null

Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.

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

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