1

我必须将用户的角色显示为列表:我不想输入它,而是点击选项。我会得到像 ROLE_USER、ROLE_ADMIN、...这样的选择

在我的 config.yml 中是否有任何配置更改?

谢谢你的帮助,阿尼斯

4

2 回答 2

6

是的。您必须使用选择类型及其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' }
于 2016-05-04T10:36:23.537 回答
1

花了一些时间,但这里有一种可能的方法来添加复选框以向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;
}
于 2016-07-15T17:21:32.723 回答