Администратор Sonata: user_block не отображается

Я использую 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"
    },

Я не получаю никаких ошибок, однако значок пользователя в правом верхнем углу не отображается! Что мне здесь не хватает?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
0
457
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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
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».

Другие вопросы по теме