Valid
Дата оновлення перекладу 2022-12-20
Valid
Це обмеження використовується, щоб включити валідацію в обʼєктах, які вбудовані в якості властивостей в обʼєкт, який валідується. Це дозволяє вам валідувати обʼєкт та всі підобʼєкти, асоційовані з ним.
?????????????? ?? | ??????????? ??? ?????? |
???? | Valid |
Дата оновлення перекладу 2022-12-21
Tip
За замовчуванням, опція error_bubbling
включена для
типу поля collection, що
передає помилки батьківській формі. Якщо ви хочете прикріпити помилки
до локацій, де вони відбуваються, вам потрібно встановити error_bubbling
як false
.
Базове застосування
У наступному прикладі, створіть два класи: Author
і Address
, обидва
з яких мають обмеження у своїх властивостях. Більш того, Author
зберігає
екземпляр Address
у властивості $address
:
1 2 3 4 5 6 7 8
// src/Entity/Address.php
namespace App\Entity;
class Address
{
protected $street;
protected $zipCode;
}
1 2 3 4 5 6 7 8 9
// src/Entity/Author.php
namespace App\Entity;
class Author
{
protected $firstName;
protected $lastName;
protected $address;
}
- Attributes
- YAML
- XML
- PHP
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 $street;
#[Assert\NotBlank]
#[Assert\Length(max: 5)]
protected $zipCode;
}
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\NotBlank]
#[Assert\Length(min: 4)]
protected $firstName;
#[Assert\NotBlank]
protected $lastName;
protected $address;
}
З таким мапуванням, можливо успішно валідувати автора з невалідною адресою.
Щоб уникнути цього, додайте обмеження Valid
до властивості $address
.
- Attributes
- YAML
- XML
- PHP
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
зазнає невдачі.
1 2
App\Entity\Author.address.zipCode:
Це значення занадто довге. Воно має містити 5 символів або менше.
Tip
Якщо ви також хочете валідувати, що властивість address
є екземпляром класу
App\Entity\Address
, додайте обмеження Type.
Опції
Дата оновлення перекладу 2022-12-20
groups
тип: array
| string
Визначаэ групу або групи валідації обмеження. Прочитайте більше про групи валідації.
Дата оновлення перекладу 2022-12-20
payload
тип: mixed
за замовчуванням: null
Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.
Наприклад, ви можете захотіти використати декілька рівнів помилок, щоб представити неуспішні обмеження по-різному у фронтенді, залежно від серйозності помилки.
traverse
тип: boolean
за замовчуванням: true
Якщо це обмеження застосовується до \Traversable
, тоді всі значення, що містять
це, будуть валідовані, якщо ця опція встановлена як true
. Ця опція ігнорується у
масивах: масиви траверсуються у будь-якому випадку. Ключі не валідуються.