我必须将用户的角色显示为列表:我不想输入它,而是点击选项。我会得到像 ROLE_USER、ROLE_ADMIN、...这样的选择
在我的 config.yml 中是否有任何配置更改?
谢谢你的帮助,阿尼斯
我必须将用户的角色显示为列表:我不想输入它,而是点击选项。我会得到像 ROLE_USER、ROLE_ADMIN、...这样的选择
在我的 config.yml 中是否有任何配置更改?
谢谢你的帮助,阿尼斯
是的。您必须使用选择类型及其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' }
花了一些时间,但这里有一种可能的方法来添加复选框以向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;
}