-->

角色界面和管理角色(Role Interface and Manage Roles)

2019-07-31 06:19发布

我有简单的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的返回我一个错误:

键入“学说\ COMMON \收藏\集”的预期的说法,“阵列”给出

我知道错误是在返回数组的实体用户的方法getRoles但我也知道getRoles是界面的方法,并且必须返回一个数组中!

任何人有一个好的解决方案?

Answer 1:

你有两个getRoles功能:

  • 一个是的所述用户接口界面,返回角色列表功能
  • 另一种是你的$角色属性的getter

因为这两种功能不能被称为相同的,他们可以是不一样的功能,因为他们需要返回不同类型的,并且由于第一功能需要遵循的界面,我建议你改变第二函数的名称。 由于这需要反映属性的名称,你应该改变这个名字。

所以,你需要做的是这样的:

/**
 * @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');
}


文章来源: Role Interface and Manage Roles