从表单更新过程中排除实体字段Symfony2

从表单更新过程中排除实体字段Symfony2

问题描述:

我处于某个实体的编辑表单与创建表单有点不同的情况。我没有显示一些字段,因为我不希望它们是可编辑的。从表单更新过程中排除实体字段Symfony2

但是,当我保存此表单时,所有未包含的字段都设置为空值并保存,但是我想从整个更新过程中排除这些字段。

我该如何做到这一点?

有几种选择:

  • 创建编辑的基本形态类型并且将其扩展增加额外的字段创建。
  • 只保留一种表单类型,但有条件地添加一些字段 - 也就是说,只有当实体是新的。你可以让表单类型为$options['data'],并检查其ID是不是null或其他。
  • 使用form events
+0

是不是第一种方式有点不可思议?编辑表单不应该扩展创建表单吗?所以基本上,我可以在扩展类中关闭字段,并使表单不为空的未设置数据? – k0pernikus 2014-02-12 17:16:34

+0

或者以不同的方式提问:您能否说出不同选项的缺点?你会推荐哪一个以及为什么。 – k0pernikus 2014-02-12 17:49:51

另一种选择是提交表单代替的handleRequest并通过第二个参数$ clearMissing为false:

$editForm->submit($request->request->get('form_name'), false);