时区
验证一个值是否为有效的时区标识符 (例如 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
)。
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
选项定义)。