奏鸣曲管理员:user_block不显示

时间:2019-04-08 09:09:01

标签: symfony sonata-admin sonata-user-bundle

我正在使用SonataAdmin,但在模板中(右上角)没有显示用户块,尽管我已将其替换为此处配置中提到的自定义模板https://sonata-project.org/bundles/admin/3-x/doc/reference/templates.html
我正在使用SonataUserBundle,这是我的配置:

sonata_admin:
    templates:
        user_block: ApplicationSonataUserBundle:Default:user_block.html.twig

这些是我正在使用的版本:

"require": {
        "php": ">=5.5.9",
        "doctrine/doctrine-bundle": "^1.6",
        "doctrine/orm": "^2.5",
        "incenteev/composer-parameter-handler": "^2.0",
        "sensio/distribution-bundle": "^5.0.19",
        "sensio/framework-extra-bundle": "^5.0.0",
        "sonata-project/admin-bundle": "^3.43",
        "sonata-project/doctrine-orm-admin-bundle": "^3.7",
        "sonata-project/user-bundle": "4.0.0",
        "symfony/monolog-bundle": "^3.1.0",
        "symfony/polyfill-apcu": "^1.0",
        "symfony/swiftmailer-bundle": "^2.6.4",
        "symfony/symfony": "3.4.*",
        "twig/twig": "^1.0||^2.0"
    },

我没有收到任何错误,但是未显示右上角的用户图标!
我在这里想念什么?

2 个答案:

答案 0 :(得分:2)

好,所以我发现奏鸣曲正在测试用户是否有role_admin来显示user_block,如此处https://github.com/sonata-project/SonataAdminBundle/blob/3.x/src/Resources/views/standard_layout.html.twig#L194所述
寻找这种情况:

{% if app.user and is_granted(sonata_admin.adminPool.getOption('role_admin')) %}

并且由于所有用户都具有ROLE_USER角色,我只需要将此信息提供给 config.yml 文件中的奏鸣曲,因此它将显示user_block所有已连接的用户,例如:

sonata_admin:
    security:
        role_admin: ROLE_USER

答案 1 :(得分:0)

sonata_admin:
    security:
        role_admin: foobar_token


class UserBlockVoter extends Voter
{
    protected function supports($attribute, $subject)
    {
        return 'foobar_token' == $attribute;
    }

    protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
    {
        return true;
    }
}

如果不是更改角色 - 为自定义命名的“role_admin”属性创建投票者,因为显示/隐藏的决定基于安全检查器。

此外,您可以使用比“ROLE_ADMIN”更复杂的规则检查选民中的“用户”实例