5

奇妙な問題があります。FosUserBundle と SonataAdminBundle で動作するように SonataUserBundle をインストールして構成しました。インストールは問題なく行われ、sonataUserBundle Web ページを介して別のユーザーを作成する場合を除いて、すべてが完全に機能しているようです。ユーザーを作成すると (データベースを調べたときに作成されます)、ユーザー リストが表示されなくなります。クリックしてユーザー リストに戻ると、次のエラーが表示されます。

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 人だけにすると、ユーザー リストにアクセスできます。

この問題を解決する方法をさらに進める方法については、まったく手がかりがありません...

編集1:

Marko Jurinčič のおかげで、設定にこれらの行があることがわかりました

sonata_user:

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

ただし、これはルートのようには見えず、事実上、page_slug という名前のルートはまったくありません。ルート名は「page_slug」であるはずですか?

4

3 に答える 3

6

私は同じ問題を抱えています。私がしたことは、私のプロジェクトで page_slug を検索することでした.page_slugがsonata_userの下のconfig.ymlで使用されていることがわかりました

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=usernameusername実際のユーザー名に変更します。

于 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 に答える