Symfony2表单删除实体数据

时间:2014-02-08 01:44:01

标签: forms symfony doctrine-orm

这个问题不是关于如何嵌入一个简单明了的实体我的问题是关于我看到的并且无法调和的异常。

我有一个实体(联系人)我对此有一个“电子邮件”关系,并希望能够在我的创建新方法中嵌入电子邮件。

所以我做了通常的嵌入步骤: 1)将我的集合添加到我的表单(contactType.php)

->add('emails', 'collection', array(
       'type' => new EmailType()
      ))

2)在Controller中,我添加了一个新的空Email电子邮件实体,并将其设置为我的表单的默认数据

$entity = new Contact();
$email = new Email();
$entity->addEmail($email);
$form->createForm(new ContactType(), $entity);

这就是问题出现的地方,进入“createForm”我的$实体有一个名为Emails的集合,$ form表格是一个空白的ContactType,没有附加电子邮件......就好像defaultData只是存在一样忽略。

如果您已经看过这个或者想知道为什么会这样,我会喜欢一些意见。

1 个答案:

答案 0 :(得分:0)

我们修改了getter以返回一个关联数组,这似乎打破了Form构建器,以下内容打破了Form Builder:

 public function getContacts()
{
    $array = new ArrayCollection();
    $property = (is_array($this->contacts)) ? $this->contacts : $array;

    foreach($property as $entity)
    {
        $array[$entity->getType()->getName()] = $entity;
    }

    return $array;
}

基本的吸气剂只是

return $this->contacts; 

哪个有效,似乎ArrayCollection()不像我们想象的那样是一个简单的关联数组。