Php Symfony2表单-如何具有隐藏字段引用父对象

Php Symfony2表单-如何具有隐藏字段引用父对象,php,forms,symfony,doctrine-orm,Php,Forms,Symfony,Doctrine Orm,我是Symfony表单的新手,我正在尝试找出如何使表单具有引用父对象的隐藏字段。例如,我有一个与联系人有多对一关系的列表。创建新联系人时,需要有一个隐藏字段,其中包含要添加联系人的列表的id 目前我正在尝试在我的ContactType表单中嵌入一个名为ListIdType的表单。ListIdType表单中唯一的字段是列表的id。这很好,因为我可以在空联系人实体上设置列表,它将自动填充名为contact[list][id](在ListIdType表单中定义)的表单中的元素。问题是,当我提交表单时,

我是Symfony表单的新手,我正在尝试找出如何使表单具有引用父对象的隐藏字段。例如,我有一个与联系人有多对一关系的列表。创建新联系人时,需要有一个隐藏字段,其中包含要添加联系人的列表的id

目前我正在尝试在我的
ContactType
表单中嵌入一个名为
ListIdType
的表单。
ListIdType
表单中唯一的字段是列表的id。这很好,因为我可以在空联系人实体上设置列表,它将自动填充名为
contact[list][id]
(在
ListIdType
表单中定义)的表单中的元素。问题是,当我提交表单时,我得到一个错误,说明list类中不存在元素“id”或方法“setId()”


但我的感觉是我做错了什么,但我找不到任何文档来为我指明正确的方向。

我提出的解决方案是添加一个隐藏字段,将
属性\u path
选项设置为
FALSE
。以下是
ContactType::buildForm
中的代码:

  $builder->add('list_id', 'hidden', array(
        'data' => $data->getList()->getId(),
        'property_path' => FALSE,
    ));
然后在控制器中处理字段


这很有效,但对我来说不是最好的解决方案。如果有人能建议一个更好的方法,我仍然是开放的

最近我发现了Gregwar的论坛包,它添加了实体id表单类型。它会自动完成大部分需要的转换,可能正是您所需要的


我确实找到了。这是唯一的解决办法吗?在我看来,应该有一种原生的Symfony方法来实现这一点。正确的处理方法是使用“数据转换器”,看看我们是否幸运HiddenEntityType很快就能进入Symfony: