4

我正在开发一个使用几种形式的 Symfony2 应用程序。表单中的数据使用 Doctrine2 持久化到 MySQL 数据库中。我使用 Symfony 注释对实体设置了一些约束。现在,当用户未能在表单中输入适当的数据时,他会收到一条错误消息,但是,当我尝试使用 Command 对象操作相同的实体时,我不会收到任何异常或错误。

从我阅读的文档中,Symfony 和 Doctrine 的验证作为单独的机制工作,现在......有没有办法让它们作为一个整体工作?我要避免的是为实体对象编写相同的验证,以便将它们用作前端和后端验证。谢谢。

4

2 回答 2

12

表单会在您调用时自动验证,$form->isValid()但如果您想验证表单之外的对象,则必须手动调用它。

在您的命令类中,只需validator在持久化之前获取服务并验证您的对象。

$validator = $this->container->get('validator');
$errors = $validator->validate($myEntity);

if (count($errors) > 0) {
    return new Response(print_r($errors, true));
} else {
    return new Response('The entity is valid!');
}

更多的文档在这里http://symfony.com/doc/master/book/validation.html#using-the-validator-service

于 2012-07-02T17:12:39.160 回答
-1

当然你可以: http ://symfony.com/doc/current/book/validation.html#constraint-configuration

单击示例的“注释”选项卡。您可以在实体中添加带有 ORM 注释的验证条件

于 2013-12-19T05:50:13.520 回答