Choice Multiple = true,创建新条目

时间:2013-03-02 23:09:11

标签: symfony entity symfony-forms

我的实体

/**
 * 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中做些什么才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

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

How to create a Custom Validation Constraint

How to use Data Transformers

Association Mapping

Working with Associations