我是Symfony表单的新手,我正在试图找出一个带有引用父对象的隐藏字段的表单。例如,我有一个与联系人有多对一关系的列表。创建新联系人时,需要一个隐藏字段,其中包含要添加联系人的列表的ID。
目前,我正在尝试在ListIdType
表格中嵌入名为ContactType
的表单。 ListIdType
形式中唯一的字段是列表的id。这很好用,因为我可以在空的联系人实体上设置列表,它会自动填充名为contact[list][id]
的表单中的元素(在ListIdType
表单中定义)。这个问题是,当我提交表单时,我得到一个错误,说列表类中不存在元素“id”或methed“setId()”。
我的感觉是我做错了什么,但我找不到任何文件指出我正确的方向。
答案 0 :(得分:6)
我提出的解决方案是添加隐藏字段,property_path
选项设置为FALSE
。以下是ContactType::buildForm
中的代码:
$builder->add('list_id', 'hidden', array(
'data' => $data->getList()->getId(),
'property_path' => FALSE,
));
然后我在控制器中处理该字段。
这有效,但对我来说不是最好的解决方案。如果有人能提出更好的方法,我仍然是开放的!
答案 1 :(得分:3)
最近我发现了Gregwar的论坛包,它增加了entity_id表单类型。它会自动完成大部分所需的转换,可能正是您所需要的。