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