创建用户后,无法为"page_slug"生成URL

Eti*_*oël 5 php symfony fosuserbundle sonata-admin sonata-user-bundle

我有一个奇怪的问题.我安装并配置了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".
Run Code Online (Sandbox Code Playgroud)

如果我从数据库中删除用户,只有一个用户,那么我可以访问用户列表.

我完全不知道如何进一步解决这个问题......

编辑1:

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

sonata_user:

    impersonating:
        route:                page_slug
        parameters:           { path: / }
Run Code Online (Sandbox Code Playgroud)

但是,这看起来并不像路由,实际上没有名为page_slug的路由.它应该有路由名称"page_slug"吗?

Mar*_*čič 6

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

impersonating:
  route: page_slug
  parameters: { path: / }  
Run Code Online (Sandbox Code Playgroud)

我仍然需要看看这是否会影响其他东西(我对Symfony来说是新手,所以我不是100%确定这不会在其他地方使用:))

评论(或仅删除)此修复了我的问题,现在我可以在管理员dahsboard中看到用户列表.

希望能帮助到你.

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


Aur*_*nas 5

删除损坏的配置

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

impersonating:
  route:                page_slug
  parameters:           { path: / }
Run Code Online (Sandbox Code Playgroud)

配置模拟

(可能是google wanderers发现的)

否则,您需要配置模拟:
1.用户需要具有角色ROLE_ALLOWED_TO_SWITCH.我将admin配置为具有此角色:

# app/config/security.yml  
security:  
  role_hierarchy:  
    ROLE_ADMIN:  [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
Run Code Online (Sandbox Code Playgroud)

2.允许用户在防火墙中切换:

# app/config/security.yml      
firewalls:
  main:
    switch_user: true
Run Code Online (Sandbox Code Playgroud)

3.(如果您需要Sonata Admin用户列表中的链接)安装SonataUserBundle - my_home_route在单击链接切换用户后替换为要打开的路径名称:

# app/config/config.yml
sonata_user:
  impersonating:
    route:  my_home_route
Run Code Online (Sandbox Code Playgroud)

手动用户切换

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


Eti*_*oël 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'))
            ;
        }*/
Run Code Online (Sandbox Code Playgroud)

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

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