Symfony2表单 - 如何使用隐藏字段引用父对象

Ico*_*ood 5 php forms symfony doctrine-orm

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

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

我的感觉是我做错了什么,但我找不到任何文件指出我正确的方向.

Ico*_*ood 6

我想出的解决方案是添加一个property_path设置为选项的隐藏字段FALSE.这是以下代码ContactType::buildForm:

  $builder->add('list_id', 'hidden', array(
        'data' => $data->getList()->getId(),
        'property_path' => FALSE,
    ));
Run Code Online (Sandbox Code Playgroud)

然后我在我的控制器中处理该字段.

这有效,但不是我最好的解决方案.如果有人能提出更好的方法,我仍然是开放的!