Symfony Validation PHP mappings



我正在构建一个Entity并尝试使用Symfony Validator组件验证数据。

这是我的代码:

class Data
{
    protected $name;
    public static function loadValidatorMetadata(ClassMetadata $metadata)
    {
        $metadata->addPropertyConstraint('name', new AssertNotBlank());
     }
}
$data = new Data; // Not putting in anything, just leaving things blank.
$validator = Validation::createValidatorBuilder()
        ->getValidator();
$errors = $validator->validate($data);

$errors进行计数返回 0,我的代码检查元数据函数是否被跳过。 知道我在这里做错了什么吗?

首先尝试使用原则注释注册验证者约束:

use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
use DoctrineCommonAnnotationsAnnotationRegistry;
class Data
{
    /**
     * @AssertNotBlank
     */
    protected $name;
}
AnnotationRegistry::registerAutoloadNamespace("SymfonyComponentValidatorConstraint", "vendor/symfony/validator");
$validator = Validation::createValidatorBuilder()
    ->enableAnnotationMapping()
    ->getValidator();
$data = new Data();
$errors = $validator->validate($data);

几乎,只是缺少 addMethodMapping()

$validator = SymfonyComponentValidatorValidation::createValidatorBuilder()
        ->addMethodMapping('loadValidatorMetadata')
        ->getValidator();

我知道这个问题很旧,但这是我的搜索结果,所以我想我会提供答案。

最新更新