首页 > 解决方案 > 如何验证不是 Doctrine Entity 对象

问题描述

我有一些$customObject是 CustomClass 的一个实例,想用 Symfony Validation 来验证它。 CustomClass不是 Doctrine 实体类。

这是我的自定义类:

use Symfony\Component\Validator\Constraints as Assert;
class SomeClass {
    /**
    * @Assert\NotBlank(message="Status should not be empty")
    * @Assert\Choices({"200", "201"})
    */
    protected $status;

    /**
    * @Assert\Type("string")
    * @Assert\NotBlank(message="Content should not be empty")
    */
    protected $content;
}

试图验证它:

$constraints = Validation::createValidator()->validate($customObject);

但是即使对象无效,约束计数也始终为 0,似乎注释解析器忽略了此对象注释。在同一项目中的 Doctrine 实体上运行良好。有任何想法吗?

标签: phpsymfonyvalidationsymfony4symfony-validator

解决方案


您需要获取 Validator 服务:

没有自动装配

$validator = $this->get('validator');

自动装配

use Symfony\Component\Validator\Validator\ValidatorInterface;
...
public function myMethod(ValidatorInterface $validator)

接着

$errors = $validator->validate($customObject);

你的配置中有没有:

framework:
    validation: { enable_annotations: true }

在此处查看更多信息: https ://symfony.com/doc/current/validation.html#using-the-validator-service


推荐阅读