Валидатор Symfony

Мой вопрос связан с компонентом проверки Symfony. Я не использую формы. И я хочу переместить правила проверки для каждой сущности в отдельный класс (например, AuthorVlidator, BookingValidator и т. Д.). Как я могу переместить его в отдельные классы и определить правила?

Благодарю.

1 ответ

Почему вы хотите переместить его в отдельные классы? С аннотациями это довольно легко использовать.

Это не очень хорошая идея, но если вы действительно хотите сделать это в других классах, вы можете добавить этот метод в каждый класс, который вы хотите проверить:

class YourObject
{
    public static function loadValidatorMetadata(ClassMetadata $metadata)
    {
        YourObjectValidator::validate($this, $metadata);
    }
}

А также:

use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\NotBlank;

class YourObjectValidator
{
    public static function validate(YourObject $object, ClassMetadata $metadata)
    {
        $metadata->addPropertyConstraint('name', new NotBlank());
    }
}

Если вы хотите отделить эту логику для добавления проверки в зависимости от значения свойств, это не правильный способ сделать это. Вы должны прочитать документ, обратный вызов может быть решением.

Другие вопросы по тегам