更改用户的角色,显示类型配置EasyAdminBundle Symfony2

时间:2016-05-04 10:25:01

标签: symfony symfony2-easyadmin

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

这样的选择

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

感谢您的帮助, 茴香

2 个答案:

答案 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;
}