Unique

Дата обновления перевода 2023-01-13

Unique

Валидирует, что все элементы заданной коллекции являются уникальными (ни один из них не присутствует больше, чем единожды). По умолчанию, элементы сравниваются строго, поэтому '7' и 7 считаются разными элементами (строка и цифра, соответственно). Если вы хотите применить другую логику сравнения, используйте опцию normalizer.

See also

Если вы хотите применить другие ограничения валидации к элементам коллекции, или хотите убедиться, что присутствуют определенные ключи коллекции, используйте Collection constraint.

See also

Если вы хотите валидировать, что значение свойства сущности является уникальным среди всех сущностей одного типа (например, электронный адрес регистрации среди всех пользователей), используйте ограничение UniqueEntity.

??????????? ? ???????? ??? ??????
????? Unique
????????? UniqueValidator

Базовое использование

Это ограничение может быть применено к любому свойству типа array или \Traversable. В следующем примере, $contactEmails является массивом строк:

  • Attributes
  • YAML
  • XML
  • PHP
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 $contactEmails;
}

Опции

fields

тип: array | string

6.1

Опция fields была представлена в Symfony 6.1.

Это определяет ключ или ключи в коллекции, которые надо проверить на уникальность. По умолчанию, все ключи коллекции проверяются на уникальность.

Например, представьте, что у вас есть коллекция объектов, которые содержат поля latitude, longitude и label. По умолчанию, вы можете иметь дублированные координаты, если ярлыки отличаются. Установив опцию fields, вы можете заставитьь долготу+широту быть уникальными в коллекции:

  • Attributes
  • YAML
  • XML
  • PHP
1
2
3
4
5
6
7
8
9
10
// src/Entity/Poi.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

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

groups

type: array | string

It defines the validation group or groups of this constraint. Read more about validation groups.

message

тип: string по умолчанию: Эта коллекция должна содержать только уникальные элементы.

Это сообщение будет отображено, если хотя бы один элемент в коллекции будет повторяться.

Вы можете использовать следующие параметры в сообщении:

???????? ????????
{{ value }} ??????? ???????? (invalid)

normalizer

тип: PHP-вызываемое по умолчанию: null

Эта опция определяет PHP-вызываемое, применимое к каждому элементу заданной коллекции, до проверки валидности коллекции.

Например, вы можете передать строку 'trim', чтобы применить PHP-функцию trim к каждому элементу коллекции, для того, чтобы игнорировать пробелы в начале и конце во время валидации.

payload

тип: mixed по умолчанию: null

Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.

Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.