Ограничения не загружаются автоматически при использовании компонента проверки вне Symfony3 - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь добавить компонент проверки Symfony в устаревший проект, который использует:

symfony / validator: 3.3.0

symfony / инъекция зависимости: 3.3.18

доктрина / аннотации: 1.5.0

доктрина / орма: 2.6.2

Я протестировал компонент проверки на каком-то простом объекте, подобном этому:

<?php

declare(strict_types=1);

use Symfony\Component\Validator\Constraints as Assert;

class UserRequest
{
    /**
     * @Assert\NotBlank()
     * @var int
     */
    private $id;

    public function __construct($id)
    {
        $this->id = $id;
    }

    public function getId(): int
    {
        return $this->id;
    }
}

И в своем сервисе я проверил этот объект следующим образом:

$request = new UserRequest(null);
$validator = Validation::createValidatorBuilder()
    ->enableAnnotationMapping() // Using default doctrine annotation reader.
    ->getValidator();
$violations = $validator->validate($request);

Но он выдал ошибку 500, указав, что эти классы ограничений не могут быть автоматически загружены.Поэтому я попытался найти в Интернете исправление, которое привело меня к добавлению в файл начальной загрузки:

$loader = require 'vendor/autoload.php';
\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader([$loader, 'loadClass']);

Он работал хорошо, но этот метод registerLoader устарел в Symfony2.

Как я могу заставить его работать в Symfony3 без ручной загрузки этих классов ограничений?

...