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;
}
Опции
groups
type: array
| string
default: null
It defines the validation group or groups of this constraint. Read more about validation groups.
Дата обновления перевода 2024-07-25
payload
тип: mixed
по умолчанию: null
Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.
Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.