主机名
此约束确保给定的值是一个有效的主机名 (内部使用 FILTER_VALIDATE_DOMAIN
选项,来自 filter_var PHP 函数)。
应用于 | 属性或方法 |
类 | 主机名 |
验证器 | HostnameValidator |
基本用法
要使用 Hostname 验证器,请将其应用于对象上包含主机名的属性。
1 2 3 4 5 6 7 8 9 10
// src/Entity/ServerSettings.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class ServerSettings
{
#[Assert\Hostname(message: 'The server name must be a valid hostname.')]
protected string $name;
}
以下顶级域名 (TLD) 根据 RFC 2606 保留,因此包含它们的主机名不被认为是有效的:.example
, .invalid
, .localhost
, 和 .test
。
注意
与大多数其他约束一样,null
和空字符串被认为是有效值。这是为了允许它们成为可选值。如果该值是强制性的,一个常见的解决方案是将此约束与 NotBlank 结合使用。
选项
message
类型: string
默认值: 此值不是一个有效的主机名。
当值不是有效主机名时提供的默认消息。
你可以在此消息中使用以下参数
参数 | 描述 |
---|---|
{{ value }} |
当前 (无效) 的值 |
{{ label }} |
对应的表单字段标签 |
payload
类型: mixed
默认值: null
此选项可用于将任意特定于域的数据附加到约束。配置的载荷不会被 Validator 组件使用,但其处理完全取决于你。
例如,你可能希望使用 多个错误级别,以便根据错误严重程度在前端以不同方式呈现失败的约束。
requireTld
类型: boolean
默认值: true
默认情况下,只有当主机名是完全限定的并且包含其 TLD(顶级域名)时,才被认为是有效的。例如,example.com
是有效的,但 example
不是。
将此选项设置为 false
以不要求主机名中包含任何 TLD。
注意
此约束不验证给定的 TLD 值是否包含在 官方顶级域名列表 中(因为该列表在不断增长,并且很难跟踪它)。
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可证获得许可。