Compound

Дата оновлення перекладу 2023-09-25

Compound

На відміну від інших обмежень, це обмеження не може бути використано самостійно. Натомість, воно дозволяє вам створювати ваш власний набір повторно використовуваних обмежень, що представляють правила для стійкого використання по всьому вашому додатку, шляхом розширення обмеження.

?????????????? ?? ????? ?? ??????????? ??? ??????
???? Compound
????????? CompoundValidator

Базове застосування

Уявіть, що у вас є різні місця, где має бути валідовано пароль користувача, ви можете створити ваш власний іменований набір вимог для стійкого повторного використання всюди:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// src/Validator/Constraints/PasswordRequirements.php
namespace App\Validator\Constraints;

use Symfony\Component\Validator\Constraints\Compound;
use Symfony\Component\Validator\Constraints as Assert;

#[\Attribute]
class PasswordRequirements extends Compound
{
    protected function getConstraints(array $options): array
    {
        return [
            new Assert\NotBlank(),
            new Assert\Type('string'),
            new Assert\Length(['min' => 12]),
            new Assert\NotCompromisedPassword(),
            new Assert\PasswordStrength(['minScore' => 4]),
        ];
    }
}

Додайте #[\Attribute] до класу обмеження, якщо ви хочете використати його в якості атрибуту в інших класах. Якщо обмеження має опції конфігурації, визначіть їх як публічні властивості у класі обмеження.

Тепер ви можете використати його будь-де, де вам потрібно:

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

use App\Validator\Constraints as Assert;

class User
{
    #[Assert\PasswordRequirements]
    public string $plainPassword;
}

Опції

Дата оновлення перекладу 2023-09-24

groups

тип: array | string за замовчуванням: null

Визначає групу або групи валідації обмеження. Прочитайте більше про групи валідації.

Дата оновлення перекладу 2024-05-29

payload

тип: mixed за замовчуванням: null

Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.

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