Невозможно создать 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
к реальному имени пользователя.