我有简单的UserInterface实体:
function getRoles()
{
return $this->roles->toArray();
}
与角色实体界面有很多关系
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"})
*/
protected $roles;
当我尝试使用表单类型
管理用户角色时public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('roles');
}
Symfony给我一个错误:
“Doctrine \ Common \ Collections \ Collection”类型的预期参数, 给出“阵列”
我知道错误发生在返回数组的实体User的getRoles方法中,但我也知道getRoles是接口的一个方法,必须返回一个数组!
任何人都有一个很好的解决方案吗?
答案 0 :(得分:5)
你有两个getRoles函数:
由于两个函数不能被调用相同而且它们不能是相同的函数,因为它们需要返回不同的类型,并且由于第一个函数需要遵循接口我建议你更改第二个函数的名称。由于这需要反映属性的名称,因此您应该更改此名称。
所以,你需要做类似的事情:
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"})
*/
protected $userRoles;
/* interface */
function getRoles()
{
return $this->userRoles->toArray();
}
/*getter*/
function getUserRoles() {
return $this->userRoles;
}
然后
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('userRoles');
}