Valid
Дата оновлення перекладу 2024-05-29
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 9
// src/Entity/Address.php
namespace App\Entity;
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
App\Entity\Author.address.zipCode:
Це значення занадто довге. Воно має містити 5 символів або менше.
Tip
Якщо ви також хочете валідувати, що властивість address
є екземпляром класу
App\Entity\Address
, додайте обмеження Type.
Опції
Дата оновлення перекладу 2023-09-24
groups
тип: array
| string
за замовчуванням: null
Визначає групу або групи валідації обмеження. Прочитайте більше про групи валідації.
Note
На відміну від інших обмежень, обмеження Valid
не використовує групу Default
.
Це означає, що воно завжди буде застосовуватися за замовчуванням, навіть якщо ви
вказали групу при виклику валідатора. Якщо ви хочете обмежити обмеження
підмножиною груп, вам слід визначити опцію groups
.
Дата оновлення перекладу 2024-05-29
payload
тип: mixed
за замовчуванням: null
Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.
Наприклад, ви можете захотіти використати декілька рівнів помилок, щоб представити неуспішні обмеження по-різному у фронтенді, залежно від серйозності помилки.
traverse
тип: boolean
за замовчуванням: true
Якщо це обмеження застосовується до \Traversable
, тоді всі значення, що містять
це, будуть валідовані, якщо ця опція встановлена як true
. Ця опція ігнорується у
масивах: масиви траверсуються у будь-якому випадку. Ключі не валідуються.