使用Symfony3以外的验证组件时,约束无法正确自动加载

时间:2019-02-21 01:02:42

标签: symfony doctrine-orm symfony-3.3

我正在尝试将Symfony验证组件添加到使用以下内容的旧项目中:

  

symfony / validator:3.3.0

     

symfony / dependency-injection: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']);

它运行良好,但是在Symfony2中不赞成使用registerLoader方法。

如何在Symfony3中运行它而无需手动自动加载那些约束类?

0 个答案:

没有答案