php - 如何验证不是 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 实体上运行良好。有任何想法吗?
解决方案
您需要获取 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
推荐阅读
- f# - F# 无法捕获 DivideByZeroException
- node.js - 使用 mongoose 更新以前保存的文档中的字段
- gcc - (arm-none-eabi-gcc) 从引导加载程序创建 .elf 二进制文件 + 2 x 固件映像
- javascript - 如何响应服务工作者中导航的 fetch 事件?
- mysql - 在 MySQL 中动态创建 lft 和 rgt 列
- webpack - Webpack - CSS 缩小和捆绑
- javascript - 在控制台中操作后,网页的行为不像复选框被选中
- django - GAE 生产 + Django + Gunicorn 错误:HaltServer 'Worker failed to boot.' 3
- python - 在 pyshark.filecapture 中隐藏弹出窗口
- python - 我的 IF 语句无法正常工作,我该如何解决?