1

我的实体

/**
 * Set friend
 *
 * @param \Frontend\ChancesBundle\Entity\UserFriends $friend
 * @return ChanceRequest
 */
public function setFriend(\Frontend\ChancesBundle\Entity\UserFriends $friend = null)
{
    $this->friend = $friend;

    return $this;
}

我的行动

$task = new ChanceRequest();
$form = $this->createFormBuilder($task)
            ->add('friend', 'choice', array(
                'required' => true,
                'expanded' => true,
                'choices' => $fb_friends,
                'multiple' => true,
                'mapped' => true
            ))
            ->getForm();

因为setFriend需要一个标量,所以我无法验证它或将其保存到 db。它是用户想要向某人发送消息的朋友数量的数组。我怎样才能改变它?

我在这里看到了一个帖子: Symfony2 Choice : Expected argument of type "scalar", "array" given 但这不起作用,我把一个数组放在前面,\Frontend或者$friend.我猜是因为相关表。

我必须在 Entity 中做什么才能让它工作?

4

1 回答 1

1

如果friends可以在您的数据库中找到(例如它是一个用户实体),您应该ManyToMany为这两个表声明关系。如果不是,则将friend属性设置为学说数组类型。如果朋友不是一个有效的实体类,剩下的就是制作一个自定义验证器和数据转换器。否则你无事可做。所有这些信息你都可以在官方的 symfony 和学说文档中找到。

如何创建自定义验证约束

如何使用数据转换器

关联映射

与协会合作

于 2013-03-03T00:12:38.687 回答