【问题标题】:Symfony2 Form Dropping Entity DataSymfony2 表单删除实体数据
【发布时间】:2014-02-08 01:44:01
【问题描述】:

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

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

所以我执行通常的嵌入步骤: 1)将我的收藏添加到我的表单(contactType.php)

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

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

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

这就是问题发生的地方,进入“createForm”我的$entity有一个名为Emails的集合,出来的$form是一个空白的ContactType,没有附加电子邮件......就好像defaultData只是忽略。

如果您已经看到或知道为什么会发生这种情况,我希望能提供一些意见。

【问题讨论】:

  • 尝试在您的电子邮件中添加 'allow_add' => true ->add('emails', 'collection', array( 'type' => new EmailType(), 'allow_add' => true ) ) 查看 symfony 文档:symfony.com/doc/current/reference/forms/types/…
  • 您可以发布您的实体代码吗?
  • 实际上我对实体的看法是错误的,只生成了一个默认的 crud,新操作完美地创建了整个表单,它只是添加了一个不起作用的集合。

标签: forms symfony doctrine-orm


【解决方案1】:

我们已经修改了我们的 getter 以返回一个关联数组,这似乎破坏了表单构建器,以下破坏了表单构建器:

 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;
}

基本的getter只是

return $this->contacts; 

这很有效,看来 ArrayCollection() 不像我们想象的那样是一个简单的关联数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2013-09-19
    相关资源
    最近更新 更多