Valid
Дата обновления перевода 2025-07-27
Valid
Это ограничение используется, чтобы подключить валидацию в объектах, которые встроены в качестве свойств в валидируемом объекте. Это позволяет вам валидировать объект и все подобъекты, связанные с ним.
| ??????????? ? | ???????? ??? ?????? |
| ????? | Valid |
Tip
По умолчанию, опция error_bubbling включена для
коллекции типов поля,
которая передаёт ошибки родительской форме. Если вы хотите присоединить
ошибки к локациям, где они происходят, то вам нужно установить
error_bubbling, как false.
Базовое применение
В следующем примере создайте два класса: Author и Address, оба
из которых имеют ограничения свойств. Более того, Author хранит
экземпляр Address в свойстве $address.
// src/Entity/Address.php namespace AppEntity;
class Address { protected string $street;
protected string $zipCode;
}
1 2 3 4 5 6 7 8 9 10 11
// src/Entity/Author.php
namespace App\Entity;
class Author
{
protected string $firstName;
protected string $lastName;
protected Address $address;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
// src/Entity/Address.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Address
{
#[Assert\NotBlank]
protected string $street;
#[Assert\NotBlank]
#[Assert\Length(max: 5)]
protected string $zipCode;
}
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\NotBlank]
#[Assert\Length(min: 4)]
protected string $firstName;
#[Assert\NotBlank]
protected string $lastName;
protected Address $address;
}
С таким отображением, возможно успешно валидировать автора с невалидным адресом.
Чтобы избежать этого, добавьте ограничение Valid к свойству $address.
1 2 3 4 5 6 7 8 9 10
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\Valid]
protected Address $address;
}
Если вы валидируете автора с невалидным адресом, вы увидите, что валидация
полей Address будет неудачной.
1 2
AppBundle\\Author.address.zipCode:
Это значение слишком длинное. Оно должно иметь 5 знаков или меньше.
Tip
Если вы также хотите валидировать, что свойство address является экземпляром
класса App\Entity\Address, добавьте ограничение Type.
Опции
Дата обновления перевода 2023-09-24
groups
тип: array | string по умолчанию: null
Определяет группу или группы валидации ограничений. Прочитайте больше о группах валидации.
Note
В отличие от других ограничений, ограничение Valid не использует группуDefault. Это означает, что оно всегда будет применяться по умолчанию,
даже если вы укажете группу при вызове валидатора. Если вы хотите ограничить
ограничение подмножеством групп, вам нужно определить опцию groups.
Дата обновления перевода 2025-07-27
payload
тип: mixed по умолчанию: null
Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.
Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.
traverse
тип: boolean по умолчанию: true
Если это ограничение применяется к свойству, содержащему массив объектов,
то каждый объект в этом массиве будет валидирован только, если эта опция
установлена, как true.