【问题标题】:Change user's roles displaying type configuration EasyAdminBundle Symfony2更改用户角色显示类型配置 EasyAdminBundle Symfony2
【发布时间】:2016-05-04 10:25:00
【问题描述】:

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

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

感谢您的帮助, 茴香

【问题讨论】:

    标签: symfony symfony2-easyadmin


    【解决方案1】:

    是的。您必须使用 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' }
    

    【讨论】:

    • 感谢您的快速回复,我都试过了,当我点击添加新用户时,我得到了错误提示:“类型“数组”的值无法转换为有效的数组键。 "您对解决方案有任何想法吗?
    • @AnisAbida 尝试将multiple: true 也添加到 type_options 中。并且您需要反转键和值(即交换 ROLE_USER 和普通用户等)
    【解决方案2】:

    花了一些时间,但这里有一种可能的方法来添加一个复选框以向用户添加或删除角色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;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2020-02-02
      • 1970-01-01
      • 2022-11-21
      • 2013-04-03
      • 1970-01-01
      相关资源
      最近更新 更多