我必须将用户的角色显示为列表:我想点击选项,而不是输入它。我会得到像ROLE_USER,ROLE_ADMIN,......
这样的选择我的config.yml中是否有任何配置更改?
感谢您的帮助, 茴香
答案 0 :(得分:3)
是。您必须使用choice type及其expanded
选项(以及可选的multiple
选项)。请记住,表单类型的选项在type_options
选项中定义:
easy_admin:
# ...
entities:
User:
# ...
form:
fields:
- { property: 'roles', type: 'choice', type_options: { expanded: true } }
如果需要,您还可以在YAML文件中定义选项:
easy_admin:
# ...
entities:
User:
# ...
form:
fields:
- property: 'roles'
type: 'choice'
type_options:
expanded: true
choices: { 'ROLE_USER': 'Normal user', 'ROLE_ADMIN': 'Administrator' }
答案 1 :(得分:0)
花了一段时间,但这里有一种方法可以添加一个复选框来向用户添加或删除角色ROLE_ADMIN
:
在easyadmin配置中,对于User实体,添加:
- {property: 'hasRoleAdmin', label: 'Is admin', type: checkbox}
或者,对于下拉菜单做同样的事情:
- {property: 'hasRoleAdmin', label: 'Role', type: choice, type_options: choices: {0: 'ROLE_USER', 1: 'ROLE_ADMIN'}}}
在您的用户实体中,添加:
public function hasRoleAdmin()
{
return $this->hasRole('ROLE_ADMIN');
}
public function setHasRoleAdmin($isAdmin)
{
if (true == $isAdmin && false == $this->hasRole('ROLE_ADMIN')) {
$this->addRole('ROLE_ADMIN');
}
if (false == $isAdmin && true == $this->hasRole('ROLE_ADMIN')) {
$this->removeRole('ROLE_ADMIN');
}
$this->isAdmin = $isAdmin;
}