У меня есть $ customObject, который является экземпляром CustomClass, и я хочу проверить его с помощью Symfony Validation. CustomClass не является классом сущности Doctrine.
Вот мой CustomClass:
use Symfony\Component\Validator\Constraints as Assert;
class SomeClass {
/**
* @Assert\NotBlank(message = "Status should not be empty")
* @Assert\Choices({"200", "201"})
*/
protected $status;
/**
* @Assert\Type("string")
* @Assert\NotBlank(message = "Content should not be empty")
*/
protected $content;
}
Пытаюсь проверить это:
$constraints = Validation::createValidator()->validate($customObject);
Но счетчик ограничений всегда равен 0, даже если объект недействителен, похоже, что анализатор аннотаций игнорирует аннотации этого объекта. Хорошо работает с сущностями Doctrine в том же проекте. Любые идеи?






Вам необходимо получить услугу Валидатора:
без автомонтирования
$validator = $this->get('validator');
с автоподводкой
use Symfony\Component\Validator\Validator\ValidatorInterface;
...
public function myMethod(ValidatorInterface $validator)
А потом
$errors = $validator->validate($customObject);
У вас в конфиге есть:
framework:
validation: { enable_annotations: true }
См. Дополнительную информацию здесь: https://symfony.com/doc/current/validation.html#using-the-validator-service
Если вы создаете экземпляр валидатора самостоятельно, вам необходимо убедиться, что загрузка аннотаций отключена по умолчанию: Validation::createValidatorBuilder()->enableAnnotationMapping()->getValidator(). много мест, когда меняется конфигурация вашего валидатора).
Спасибо, у меня работает Не знал, что проверка с аннотациями объектов не будет работать, если проверка создается напрямую (без автоматического подключения или не как услуга).