Sonata admin-bundle - 没有注销导航栏

Posted

技术标签:

【中文标题】Sonata admin-bundle - 没有注销导航栏【英文标题】:Sonata admin-bundle - haven't logout nav bar 【发布时间】:2017-08-05 09:55:40 【问题描述】:

我已经安装了带有 User-bundle 和 FOSUserBundle 的 Sonata-admin-bundle 3.x。大多数情况下,所有这些东西都工作得很好,但在管理面板中,注销按钮不见了。注销按钮显示在 DEV 环境的页脚中,但不在 PROD 中。任何人都知道如何将注销按钮添加到右上角的上方导航栏?有人能帮我吗 ?

 % block user_block %
    % if app.user %
        % set _bg_class          = "bg-light-blue" %
        % set _logout_uri        = url('sonata_user_admin_security_logout') %
        % set _logout_text       = 'user_block_logout'|trans(, 'SonataUserBundle') %
        % set _profile_uri       = sonata_user.userAdmin.isGranted('EDIT', app.user) ? sonata_user.userAdmin.generateUrl('edit', id: sonata_user.userAdmin.id(app.user)) : sonata_user.userAdmin.generateUrl('show', id: sonata_user.userAdmin.id(app.user)) %
        % set _profile_text      = 'user_block_profile'|trans(, 'SonataUserBundle') %
        % set _user_image        = sonata_user.defaultAvatar ? asset(sonata_user.defaultAvatar) : null %
        # Customize this with your profile picture implementation, see below for example #
        #% set _user_image  = app.user.profilePicture|default(asset(sonata_user.defaultAvatar)) %#

        % if is_granted('ROLE_PREVIOUS_ADMIN') and sonata_user.impersonating %
            % set _bg_class    = "bg-light-green" %
            % set _logout_uri  = url(sonata_user.impersonating.route, sonata_user.impersonating.parameters| merge('_switch_user': '_exit')) %
            % set _logout_text = 'switch_user_exit'|trans(, 'SonataUserBundle') %
        % endif %

        <li class="user-header  _bg_class ">
            % if _user_image %
                <img src=" _user_image " class="img-circle"  />
            % endif %
            <p> app.user </p>
        </li>
        <li class="user-body">

        </li><li class="user-footer">
            <div class="pull-left">
                <a href=" _profile_uri " class="btn btn-default btn-flat"><i class="fa fa-user"></i>  _profile_text </a>
            </div>

            <div class="pull-right">
                <a href=" _logout_uri " class="btn btn-default btn-flat"><i class="fa fa-sign-out fa-fw"></i>  _logout_text </a>
            </div>
        </li>
    % endif %
% endblock %

【问题讨论】:

在您的页面中,注销 uri 定义为 &lt;a href=" _logout_uri "&gt;...&lt;/a&gt;。真正的网址是url('sonata_user_admin_security_logout')。只需复制/粘贴到您需要的位置即可? 好的,感谢您的帮助 :) 但这不是我问题的关键。我只是必须自定义 user_block 但在 core-bundle 中。 【参考方案1】:

首先,您必须在配置中检查或设置奏鸣曲管理员角色(Sonata Admin Bundle Configuration Reference):

sonata_admin:
    security:
        role_admin: ROLE_SUPER_DUPER_ADMIN

默认为ROLE_SONATA_ADMIN

那别忘了更新security.yaml中的角色层次,给用户设置对应的角色。

【讨论】:

【参考方案2】:

要查看注销按钮,您需要分配角色

ROLE_SONATA_ADMIN

给用户。

【讨论】:

【参考方案3】:

确保您已将角色 ROLE_ADMIN 分配给您的用户,例如在您的security.yml 中他的角色层次结构中。

我遇到了完全相同的问题,这解决了它。

【讨论】:

以上是关于Sonata admin-bundle - 没有注销导航栏的主要内容,如果未能解决你的问题,请参考以下文章

sonata AdminBlockServiceInterface 弃用,以明确安装 symfony 2.8 + sonata 3.10

Sonata Admin 覆盖模板 form_admin_fields.html.twig

依赖问题作曲家[奏鸣曲管理员; SonataDoctrineORMAdminBundle]

如何使用 admin-bundle 处理 Symfony 4 中的 perPageOptions 弃用?

Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类

有没有办法确定 Sonata\AdminBundle\Admin\Admin::configureFormFields() 中的当前操作(创建或编辑)?