我目前在我的应用程序中可以选择让用户从列表中选择最喜欢的项目。表单元素是实体类型,并显示对象列表。用户可以选择其中的一些作为他们个人的最爱。
然而,虽然列表必须显示项目,但必须存储的实际上是一个 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);
}