我正在使用 Symfony2、Doctrine 和 FOSRestBundle 构建一个 API。我想使用表单组件来验证创建或修改记录并遇到一些问题的 API 请求。我一直在使用它自己的验证组件,但想转而使用表单组件,因为它将所有验证逻辑移出控制器,更好地处理将请求数据绑定到我的实体并更好地聚合错误消息。
我遇到的问题与不需要的字段有关,无论是通过 POST 创建记录还是通过 PUT 更新记录。理想情况下,我希望它根本不需要通过 HTTP 提交非必填字段,但这会导致表单验证失败。例如,我正在使用的实体上的字段之一是名为 endTime 的 DateTime 字段,这不是必需的。如果 POST 或 PUT 请求中不存在名为 endTime 的参数,Symfony2 会将值 null 从请求绑定到字段。当它被转换为 DateTime 实例时,它被转换为当前日期时间,这根本不是我想要的。
如果 HTTP 请求中不存在值,有没有办法告诉 Symfony 不要将值绑定到实体?这应该仍然是安全的,因为基于实体类中的注释验证仍然会失败。我可以覆盖绑定方法,但这似乎需要做很多工作......
感谢您的任何想法。