Не удалось создать 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"?

Author: CoachNono, 2013-10-14

3 answers

У меня та же проблема. Что я сделал, так это поиск page_slug в моем проекте, и я обнаружил, что page_slug используется в моей конфигурации.yml в разделе sonata_user

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

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

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

Надеюсь, что это помогает.

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

 5
Author: Marko Jurinčič, 2013-10-17 08:10:27

Удалить сломанную конфигурацию

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

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

Настройка олицетворения

(Пусть это найдут путешественники Google)

В противном случае вам необходимо настроить олицетворение:
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) Настройка SonataUserBundle - замените my_home_route именем маршрута, которое будет открыто после нажатия ссылки для переключения пользователя:

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

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

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

 5
Author: Aurelijus Rozenas, 2014-01-13 12:51:31

Я видел на подходе на веб-сайте (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

Проблема решена. Однако я не знаю последствий такого поступка...

 2
Author: CoachNono, 2013-10-16 14:18:15