跳到内容

唯一性

编辑此页

验证给定集合中的所有元素是否唯一(没有元素出现多次)。默认情况下,元素会进行严格比较,因此 '7'7 被认为是不同的元素(分别是字符串和整数)。如果你想应用任何其他比较逻辑,请使用 normalizer 选项。

另请参阅

如果你想对集合中的元素应用不同的验证约束,或者想确保某些集合键存在,请使用 Collection 约束

另请参阅

如果你想验证实体属性的值在同一类型的所有实体中是否唯一(例如,所有用户的注册邮箱),请使用 UniqueEntity 约束

应用于 属性或方法
唯一性
验证器 UniqueValidator

基本用法

此约束可以应用于任何 array\Traversable 类型的属性。在以下示例中,$contactEmails 是一个字符串数组

1
2
3
4
5
6
7
8
9
10
// src/Entity/Person.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Person
{
    #[Assert\Unique]
    protected array $contactEmails;
}

选项

字段

类型: array | string

这定义了集合中应该检查唯一性的键。默认情况下,所有集合键都会检查唯一性。

例如,假设你有一个包含 latitudelongitudelabel 字段的项集合。默认情况下,只要标签不同,你就可以有重复的坐标。通过设置 fields 选项,你可以强制纬度+经度在集合中是唯一的

1
2
3
4
5
6
7
8
9
10
// src/Entity/PointOfInterest.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class PointOfInterest
{
    #[Assert\Unique(fields: ['latitude', 'longitude'])]
    protected array $coordinates;
}

分组

类型: array | string 默认值: null

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

错误路径

类型: string 默认值: null

7.2

errorPath 选项在 Symfony 7.2 中引入。

如果发生验证错误,默认情况下,错误消息会绑定到集合中的第一个元素。使用此选项可以将错误消息绑定到集合中第一个项内的特定字段。

此选项的值必须使用任何 有效的 PropertyAccess 语法(例如,'point_of_interest''user.email')。

消息

类型: string 默认值: This collection should contain only unique elements.

如果集合中至少有一个元素重复,将显示此消息。

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

参数 描述
{{ value }} 当前的(无效的)值

标准化器

类型: 一个 PHP 可调用对象 默认值: null

此选项定义了在检查集合是否有效之前,应用于给定集合中每个元素的 PHP 可调用对象。

例如,你可以传递 'trim' 字符串来应用 trim PHP 函数到集合中的每个元素,以便在验证期间忽略前导和尾随空格。

载荷

类型: mixed 默认值: null

此选项可用于将任意特定于域的数据附加到约束。配置的载荷不被验证器组件使用,但其处理完全取决于你。

例如,你可能想使用 几个错误级别 在前端根据错误的严重程度不同地呈现失败的约束。

本作品,包括代码示例,均在 Creative Commons BY-SA 3.0 许可下获得许可。
目录
    版本