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, але його обробка повністю залежить від вас.
Наприклад, ви можете захотіти використати декілька рівнів помилок, щоб представити неуспішні обмеження по-різному у фронтенді, залежно від серйозності помилки.