5

我有一个奇怪的问题。我安装并配置了 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:

感谢 Marko Jurinčič,我发现我的配置中有这些行

sonata_user:

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

但是,这看起来不像是一条路线,而且实际上没有任何名为 page_slug 的路线。它应该有一个路线名称“page_slug”吗?

4

3 回答 3

6

我有同样的问题。我所做的是在我的项目中搜索 page_slug,我发现 page_slug 在我的 config.yml 中的 sonata_user 下使用

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

我仍然需要看看这是否会影响其他东西(我对 Symfony 有点陌生,所以我不能 100% 确定这不会在其他地方使用 :))

评论(或只是删除)这解决了我的问题,现在我可以在管理仪表板中看到用户列表。

希望能帮助到你。

编辑:我找到了答案。在此链接中解释了模拟的含义: https ://github.com/sonata-project/SonataUserBundle/issues/174

于 2013-10-16T09:26:21.870 回答
5

删除损坏的配置

在您的情况下,如果您不使用模拟,您应该从配置中删除行:

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 用户列表中) Setup SonataUserBundle - 替换my_home_route为点击链接切换用户后要打开的路由名称:

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

手动用户切换

手动切换用户添加字符串到 url end: ?_switch_user=username。更改username为真实用户名。

于 2014-01-13T12:51:31.487 回答
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

解决了这个问题。但是,我不知道这样做的影响......

于 2013-10-16T14:18:15.597 回答