我正在构建一个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();
我知道这个问题很旧,但这是我的搜索结果,所以我想我会提供答案。