在没有 SonataUserBundle 的情况下访问 SonataAdminBundle 中的管理面板

Posted

技术标签:

【中文标题】在没有 SonataUserBundle 的情况下访问 SonataAdminBundle 中的管理面板【英文标题】:Access Admin Panel in SonataAdminBundle without SonataUserBundle 【发布时间】:2018-05-19 05:05:10 【问题描述】:

我在一个使用 SonataAdminBundle 的 Symfony 项目中工作,我有 3 种类型的用户:ROLE_SUPER_ADMIN ROLE_CORRESPONDANTROLE_CLIENT

ROLE_SUPER_ADMINROLE_CORRESPONDANT 有权访问管理面板,

在管理面板中我有一个这样的菜单:

仪表盘

产品 股票 运营

用户

通讯员 客户

但我想只为 ROLE_CORRESPONDANT 显示此项目:

仪表板 运营 用户 客户

我现在使用 SonataUserBundle 很容易,但我的问题是我不应该使用它,我应该只使用 FOSUserBundle,

sonata_admin:

    dashboard: 
        groups:
            Accueil:
                icon: '<i class="fa fa-home"></i>'

                items:
                    - app.admin.produit
                    // I would like to define roles her for each item

如果可行,请有人帮我出主意? 谢谢大家

【问题讨论】:

你不应该使用 SonataUserBundle 吗?但是您已将其标签添加到此问题中?请更新您的问题以解释您现在如何构建菜单。如果您还没有,请查看 KnpMenuBundle。 我应该使用 SonataAdminBundle,但不要使用 SonataUserBundle 对不起,你是对的。但是你现在如何构建你的菜单呢? 我通过服务构建我的菜单 服务? KnpMenu? 【参考方案1】:

app/config/config.yml

sonata_admin:
    dashboard:
        groups:
            news:
                label:                ~
                label_catalogue:      ~
                items:
                    - sonata.news.admin.post
                    - route:        blog_home
                      label:        Blog
                      roles:        [ ROLE_FOO, ROLE_BAR ]
                    - route:        blog_article
                      route_params:  articleId: 3 
                      label:        Article
                roles: [ ROLE_ADMIN, ROLE_SONATA_ADMIN]

link

【讨论】:

感谢您的回复,但我不喜欢创建其他路线,我喜欢使用奏鸣曲的路线, 这可能是正确的答案,但它只是代码。请解释你的答案。 我尝试使用 Sonata 为 AdminClass 生成的默认路由来测试这个答案,但我有这个错误:“预期数组项的参数“路由”和“标签”。

以上是关于在没有 SonataUserBundle 的情况下访问 SonataAdminBundle 中的管理面板的主要内容,如果未能解决你的问题,请参考以下文章

SonataUserBundle 和 Symfony 3.4

在 Symfony/SonataUserBundle 设置中调用方法 setCurrentUri 失败

SonataUserBundle 覆盖 EditableRolesBuilder

Symfony2 / SonataUserBundle - 注册后自动登录

SonataUserBundle 的 check_path 异常

无法在 Symfony2 2.4 中安装 SonataUserBundle