Как проверить не объект сущности доктрины

У меня есть $ 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 в том же проекте. Любые идеи?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
497
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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#using-the-validator-service

Спасибо, у меня работает Не знал, что проверка с аннотациями объектов не будет работать, если проверка создается напрямую (без автоматического подключения или не как услуга).

Mr.Sion 20.12.2018 12:46

Если вы создаете экземпляр валидатора самостоятельно, вам необходимо убедиться, что загрузка аннотаций отключена по умолчанию: Validation::createValidatorBuilder()->enableAnnotationMappin‌​g()->getValidator(). много мест, когда меняется конфигурация вашего валидатора).

xabbuh 20.12.2018 17:01

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