Невозможно создать URL для "page_slug" после создания пользователя

У меня странная проблема. Я установил и настроил SonataUserBundle для работы с FosUserBundle и SonataAdminBundle. Установка прошла без проблем, и все, кажется, работает отлично, за исключением случаев, когда я создаю другого пользователя через веб-страницу sonataUserBundle. Как только я создаю пользователя (и он создается, когда я просматриваю базу данных), я больше не вижу список пользователей. Когда я нажимаю, чтобы вернуться в список пользователей, я получаю следующую ошибку:

An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "page_slug" as such route does not exist.") in "SonataAdminBundle:CRUD:list.html.twig".

Если я удаляю пользователя из базы данных, чтобы иметь только одного пользователя, я могу получить доступ к списку пользователей.

У меня нет абсолютно никакой подсказки о том, как получить дальнейшее о том, как решить эту проблему...

Изменить 1:

Благодаря Марко Юринчичу я узнал, что у меня есть эти строки в моем конфиге

sonata_user:

    impersonating:
        route:                page_slug
        parameters:           { path: / }

Однако это не похоже на маршрут и, по сути, нет никаких маршрутов с именем page_slug. Это должно иметь название маршрута "page_slug"?

3 ответа

Решение

Я видел подход на веб-сайте ( http://www.laurent-masforne.com/memo/surcharger-sonatauserbundle-notamment-useradmin/) и комментировал эти строки:

/*if ($this->isGranted('ROLE_ALLOWED_TO_SWITCH')) {
            $listMapper
                ->add('impersonating', 'string', array('template' => 'SonataUserBundle:Admin:Field/impersonating.html.twig'))
            ;
        }*/

в vendor\sonata-project\user-bundle\Sonata\UserBundle\Admin\Model\ApplicationUserAdmin

решил проблему. Тем не менее, я не знаю, как это сделать...

Я с той же проблемой. То, что я сделал, было для поиска page_slug в моем проекте, и я обнаружил, что page_slug используется в моем config.yml под sonata_user

impersonating:
  route: page_slug
  parameters: { path: / }  

Мне все еще нужно посмотреть, влияет ли это на что-то другое (я новичок в Symfony, поэтому я не уверен на 100%, что это не используется где-то еще:))

Комментирование (или просто удаление) исправило мою проблему, и теперь я могу видеть список пользователей на панели администратора.

Надеюсь, поможет.

РЕДАКТИРОВАТЬ: я нашел ответ. В этой ссылке объясняется значение подражания: https://github.com/sonata-project/SonataUserBundle/issues/174

Удалить неработающий конфиг

В вашем случае, если вы не будете использовать олицетворение, вы должны просто удалить строки из конфигурации:

impersonating:
  route:                page_slug
  parameters:           { path: / }

Настроить подражание

(Пусть это найдут гугл странники)

В противном случае вам нужно настроить олицетворение:
1. Пользователь должен иметь роль ROLE_ALLOWED_TO_SWITCH, Я настроил администратора, чтобы иметь эту роль:

# app/config/security.yml  
security:  
  role_hierarchy:  
    ROLE_ADMIN:  [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]

2. Разрешить переключение пользователей в брандмауэре:

# app/config/security.yml      
firewalls:
  main:
    switch_user: true

3. (Если вам нужна ссылка в списке пользователей Sonata Admin), настройте SonataUserBundle - замените my_home_route с именем маршрута, который будет открыт после нажатия на ссылку для переключения пользователя:

# app/config/config.yml
sonata_user:
  impersonating:
    route:  my_home_route

Ручное переключение пользователей

Чтобы вручную переключить пользователя, добавьте строку в конец URL: ?_switch_user=username, + Изменить username к реальному имени пользователя.

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