【问题标题】:How to make Symfony2 entity formtype show entities of type A but save them as type B?如何使 Symfony2 实体表单类型显示 A 类型的实体但将它们保存为 B 类型?
【发布时间】:2013-01-03 23:50:23
【问题描述】:

我目前在我的应用程序中可以选择让用户从列表中选择最喜欢的项目。表单元素是实体类型,并显示对象列表。用户可以选择其中的一些作为他们个人的最爱。

然而,尽管列表必须显示项目,但必须存储的实际上是一个 FavoritedItem(其中包含有关用户何时/如何收藏他的项目的额外信息)。

我不知道如何转换实体类型,以便用户可以从项目实体列表中选择,但表单存储连接到用户的 FavoritedItems。

【问题讨论】:

  • 您的实体是如何设置的?两者是什么关系?

标签: forms symfony


【解决方案1】:

我猜您的实体与 FavoritedItem 有关系,当您创建表单时,不要包含该字段,而是包含用户选择的数据的虚拟字段:

$builder->add('favs', null, array('property_path' => false, 'type'='entity'.....));

找到这一行:

    if ($form->isValid()) {
        // perform some action, such as saving the task to the database

        return $this->redirect($this->generateUrl('task_success'));
    }

并为您的每个项目,在您的实体上设置适当的 FavoritedItem。它看起来像:

$favorites = $form->get('favs')->getData();

foreach($favorites as $f){
    $FavItem = new FavoritedItem($f);
    $yourEntity->addFavorite($FavItem);
}

【讨论】:

猜你喜欢
  • 2016-03-08
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多