从表单更新过程中排除实体字段Symfony2
问题描述:
我处于某个实体的编辑表单与创建表单有点不同的情况。我没有显示一些字段,因为我不希望它们是可编辑的。从表单更新过程中排除实体字段Symfony2
但是,当我保存此表单时,所有未包含的字段都设置为空值并保存,但是我想从整个更新过程中排除这些字段。
我该如何做到这一点?
答
有几种选择:
- 创建编辑的基本形态类型并且将其扩展增加额外的字段创建。
- 只保留一种表单类型,但有条件地添加一些字段 - 也就是说,只有当实体是新的。你可以让表单类型为
$options['data']
,并检查其ID是不是null
或其他。 - 使用form events。
答
另一种选择是提交表单代替的handleRequest并通过第二个参数$ clearMissing为false:
$editForm->submit($request->request->get('form_name'), false);
是不是第一种方式有点不可思议?编辑表单不应该扩展创建表单吗?所以基本上,我可以在扩展类中关闭字段,并使表单不为空的未设置数据? – k0pernikus 2014-02-12 17:16:34
或者以不同的方式提问:您能否说出不同选项的缺点?你会推荐哪一个以及为什么。 – k0pernikus 2014-02-12 17:49:51