【发布时间】:2016-10-22 23:06:47
【问题描述】:
我正在尝试根据现有模型/实体/POPO 验证提交的数据,但是我无法以任何简单的方式使其工作。
所有这些都发生在控制器动作中。
所以,我可以这样做:
$constraints = new Assert\Collection([
'username' => [new Assert\NotBlank()],
'email' => [new Assert\Email()],
]);
$violationList = $this->get('validator')->validate($request->request->all(), $constraints);
但是,在每个动作中都这样做是没有意义的,因为在一个类中包含所有约束会好得多。因此,验证组件允许这样做:
// All constraints are defined inside Customer class
$customer = new Customer();
$violationList = $this->get('validator')->validate($customer);
违规列表现在充满了错误,因为 $customer 是一个空对象,但问题是我找不到使用来自 POST 的数据并根据类中定义的约束对其进行验证的方法。
可以编写额外的组件/帮助程序来获取 POST 数据,然后调用 ->setUsername()、->setEmail() 等,但考虑到您可以轻松地将模型映射到 POST 数据,这似乎不正确, 如果:
- 涉及表单组件;
- 或手动使用 ConstraintsCollection;
我在这里遗漏了一些明显的东西还是没有开箱即用的可能性?谢谢!
【问题讨论】:
标签: php validation symfony