首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EasyAdmin choiceField错误Symfony

EasyAdmin choiceField错误Symfony
EN

Stack Overflow用户
提问于 2021-09-29 16:18:16
回答 1查看 372关注 0票数 0

我认为EasyAdmin 3.5.9中有一个bug,但是在GitHub中创建一个问题之前,我想听听大家的意见。

在我的用户CRUD中,我希望能够编辑用户角色,这在默认情况下是不显示的。因此,我在UserCrudController类中添加了如下内容:

代码语言:javascript
复制
public function configureFields(string $pageName): iterable
{
    $roles = [
        'User'   => 'ROLE_USER',
        'Agency' => 'ROLE_AGENCY',
        'Admin'  => 'ROLE_ADMIN'
    ];

    return [
        // ...
        ChoiceField::new('roles')
            ->setChoices($roles)->allowMultipleChoices(),
        // ...
    ];
}

下面是它在User实体中的外观:

代码语言:javascript
复制
/**
 * @see UserInterface
 */
public function getRoles(): array
{
    $roles = $this->roles;

    $roles[] = 'ROLE_USER';
    $roles[] = 'ROLE_AGENCY';
    $roles[] = 'ROLE_ADMIN';

    return array_unique($roles);
}

public function setRoles(array $roles): self
{
    $this->roles = array_values($roles);

    return $this;
}

实际上,当我想通过选择其中一个选项来编辑EasyAdmin用户时,它会将正确的值保存在数据库中。但是当我回到同一个用户来编辑它时,所有的选择仍然显示在字段中,就像我以前什么也没做过一样。因此,这似乎更多的是一个显示问题,而不是数据保存问题。

下面是一个更好理解的快速屏幕记录:https://watch.screencastify.com/v/If9xScwQAFqcbbfGBmza

希望你能帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 09:00:20

您的UserInterface::getRoles()正在手动将所有角色重新添加到已设置的角色中。该方法应该只需要以下内容:

代码语言:javascript
复制
public function getRoles(): array
{
    return array_unique($this->roles);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69380089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档