Symfony2:给定的类型为“object”,“integer”的预期参数

时间:2012-10-11 12:41:12

标签: forms symfony entity

我正在尝试使用下拉列表创建表单。数据来自实体。 问题是我得到了一个类型"对象","整数"的预期参数。给予例外。

以下是我尝试在表单中填充下拉列表的方法:

public function buildForm(FormBuilder $builder, array $options)
{
   $builder->add('country', 'entity', array(
        'class' => 'SciForumVersion2Bundle:Country',
        'property' => 'country',
    ));
}

在我的实体国家/地区,我有

/**
 * @ORM\Column(type="text")
 */
protected $country;

我在表单中编辑的对象是用户对象:

$enquiry = $this->get('security.context')->getToken()->getUser();

在用户实体中,我有

/**
 * @ORM\Column(type="integer")
 */
protected $country;

我不知道为什么会收到此错误。

1 个答案:

答案 0 :(得分:2)

您的模型设计中似乎存在问题,用户的“Country”属性应该是Many-To-One association,而不是整数(这就是表单构建器抱怨的原因):

/**
 * @ORM\ManyToOne(targetEntity="Country")
 * @ORM\JoinColumn(name="country_id", referencedColumnName="id")
 **/
private $country;

“property”选项仅用于向用户显示实体选择,Symfony2使用“add”方法的第一个参数来决定要编辑的对象的哪个字段。