我有一个奇怪的问题。我安装并配置了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:
我发现,感谢MarkoJurinčič,我的配置中有这些行
sonata_user:
impersonating:
route: page_slug
parameters: { path: / }
然而,这看起来并不像路线,实际上没有名为page_slug的路线。是否应该有路线名称“page_slug”?
答案 0 :(得分:5)
我遇到了同样的问题。我做的是在我的项目中搜索page_slug,我发现page_slug用在我的config.yml下sonata_user
impersonating:
route: page_slug
parameters: { path: / }
我仍然需要看一看是否会影响其他内容(我对Symfony不熟悉,所以我不能100%确定这不会在其他地方使用:))
评论(或仅删除)此修复我的问题,现在我可以在管理员dahsboard中看到用户列表。
希望它有所帮助。
编辑: 我找到了答案。在此链接中解释了冒充的含义: https://github.com/sonata-project/SonataUserBundle/issues/174
答案 1 :(得分:5)
在您的情况下,如果您不使用模拟,则应该从配置中删除行:
impersonating:
route: page_slug
parameters: { path: / }
(可由google wanderers发现)
否则您需要配置模拟:
1.用户需要具有角色ROLE_ALLOWED_TO_SWITCH
。我将admin配置为具有此角色:
# 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 end:?_switch_user=username
。将username
更改为真实用户名。
答案 2 :(得分:2)
我在网站上看到了一种方法(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
中的
解决了这个问题。但是,我不知道这样做的影响......