我正在尝试将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中运行它而无需手动自动加载那些约束类?