【发布时间】:2014-10-07 03:13:24
【问题描述】:
我有一个在 Symfony 中构建的表单,当在视图中呈现时,html 表单可能包含也可能不包含表单对象中的所有字段(实体类型有几个不同的状态,而不是所有字段在视图中呈现)。
问题在于,当在提交处理程序中处理表单时,通过表单对象的 handleRequest() 方法,它将实体中的任何属性重置为空,而这些属性在发布数据中不存在,从而消除了任何现有值.
有什么方法可以告诉 Symfony 不要那么愚蠢,只处理 POST 数据中存在的字段?
或者我是否必须在 handleRequest 调用之前克隆实体,然后遍历 POST 值并将相关值从 post-handleRequest 实体复制到实体的 pre-handleRequest 克隆中,所以我保留了以下字段不在 POST 数据中。
呸!正如你所看到的,它有点愚蠢的解决方案,有点愚蠢的问题,tbh。
如果实体实际上是一个新创建的对象,我可以理解 symfony 这样做,但是它是从数据库加载的,然后调用了 handleRequest - 它应该足够明智地知道对象已经被初始化并且只设置字段传入 POST 数据。
感谢您的帮助。
问候
史蒂夫。
【问题讨论】: