Как проверить не Doctrine Entity Object
У меня есть некоторый $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 в том же проекте. Есть идеи?
1 ответ
Решение
Вам необходимо получить услугу валидатора:
без автопроводки
$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