Forms 如何使Symfony2实体formtype显示类型A的实体,但将其另存为类型B?

Forms 如何使Symfony2实体formtype显示类型A的实体,但将其另存为类型B?,forms,symfony,Forms,Symfony,我目前在我的应用程序中有一个选项,用户可以从列表中选择喜爱的项目。form元素的类型为Entity,并显示对象列表。用户可以选择其中一些作为他们的个人收藏 但是,尽管列表必须显示项目,但必须存储的实际上是FavoritedItem(其中包含有关用户何时/如何偏爱其项目的额外信息) 我不知道如何转换实体类型,以便用户可以从项目实体列表中选择,但表单存储连接到用户的FavoritedItems。我猜您的实体与FavoritedItem有关系,在创建表单时,不要包含该字段,但包含用户选择的数据的虚拟字

我目前在我的应用程序中有一个选项,用户可以从列表中选择喜爱的项目。form元素的类型为Entity,并显示对象列表。用户可以选择其中一些作为他们的个人收藏

但是,尽管列表必须显示项目,但必须存储的实际上是FavoritedItem(其中包含有关用户何时/如何偏爱其项目的额外信息)


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

我猜您的实体与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);
}

您的实体是如何设置的?这两者之间有什么关系?谢谢。有没有办法在表单中处理所有这些问题?由于可重用性,我不希望将逻辑移到控制器上。如果要使用现在使用的相同字段类型,请创建自定义转换器(),您可能希望看到以下问题: