2017-12-05 14 views
1

どのようにSonataAdminBundle AdminPoolを使用せずに現在の管理クラスを取得しますか?現在の管理クラスをSonataAdminBundleで取得する方法は?

今、私はこの

$entityClass = get_class($entity); 
    $adminClass = $this->adminPool->getAdminByClass($entityClass); 

ようにそれをやろうとしている。しかし、この方法には問題があります。エンティティが管理者の複数のクラスに関連付けられている場合、例外がスローされます。 管理サービスが現在のルートを正確に処理する必要があることを知る方法はありますか?

ありがとうございます!

+0

私はこのことを忘れてしまった –

答えて

0

このエンティティのクラスに複数の管理者が登録されている場合は、正しいエンティティを選択することはできません。

また、Pool::getAdminByAdminCode(string $code)という方法で特定の管理者を取得することもできます。

例えば、あなたは可能性のために使用:あなたはこの混乱を作っ示唆してあなたの変数$adminClassの名前:

if ($entityClass === MultipleAdminRegisteredEntity::class) { 
    $admin = $this->adminPool->getAdminById('specific_admin_id'); 
} else { 
    $entityClass = get_class($entity); 
    $admin = $this->adminPool->getAdminByClass($entityClass); 
} 

Pool::getAdminByClass(string $class)Adminではなく、クラスstringを返すということに注意してくださいは、 。 https://github.com/sonata-project/SonataAdminBundle/issues/3908エンティティに複数の管理者がある場合にPool:getAdminByClass()メソッドが例外をスローしないように、デフォルトの管理者を定義することができるようにする方法を決定するために:

もここのGithub上の未解決の問題があることに注意してください。誰もこれを実装するためにこれについて十分な注意を払っているようではありません。

関連する問題