跳到内容

时区

编辑此页

验证一个值是否为有效的时区标识符 (例如 Europe/Paris)。

应用于 属性或方法
时区
验证器 TimezoneValidator

基本用法

假设你有一个 UserSettings 类,其中有一个 timezone 字段,它是一个字符串,包含任何 PHP 时区标识符 (例如 America/New_York)

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 string $timezone;
}

注意

与大多数其他约束一样,null 和空字符串被认为是有效值。这是为了允许它们成为可选值。如果该值是强制性的,一个常见的解决方案是将此约束与 NotBlank 结合使用。

选项

countryCode

类型: string 默认值: null

如果 zone 选项设置为 \DateTimeZone::PER_COUNTRY,则此选项将有效时区标识符限制为属于给定国家/地区的标识符。

此选项的值必须是有效的 ISO 3166-1 alpha-2 国家代码 (例如,中国的 CN)。

groups

类型: array | string 默认值: null

它定义了此约束的验证组。阅读更多关于 验证组 的信息。

intlCompatible

类型: boolean 默认值: false

此约束同时认为 PHP 时区标识符 和 Symfony 的 Intl 组件 提供的 ICU 时区 有效。

但是,Intl 组件提供的时区可能与 PHP 的 Intl 扩展提供的时区不同 (因为它们使用不同的 ICU 版本)。如果此选项设置为 true,则此约束仅认为与 PHP \IntlTimeZone::createTimeZone() 方法兼容的值有效。

message

类型: string 默认值: 这不是一个有效的时区。

如果底层数据不是有效的时区标识符,则会显示此消息。

您可以在此消息中使用以下参数

参数 描述
{{ value }} 当前(无效)值
{{ label }} 对应的表单字段标签

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 选项定义)。
本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本