2017-12-05 11 views
1

SonataAdminBundle에서 어떻게 AdminPool을 사용하지 않고 현재 관리 클래스를 가져 옵니까? SonataAdminBundle에서 현재 관리 클래스를 가져 오는 방법은 무엇입니까?

는 지금이

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

처럼 할 노력하고있어하지만이 방법은 문제가 있습니다. 엔티티가 관리자의 여러 클래스와 연관되어 있으면 예외가 발생합니다. 관리 서비스가 현재 경로를 정확히 처리해야하는 것을 알아낼 방법이 있습니까?

감사합니다.

+0

나는이 말을 잊어 버렸습니다. 유권자에게이 기능이 필요합니다. –

답변

0

이 엔티티 클래스에 등록 된 관리자가 여러 명있는 경우 올바른 엔티티를 선택할 수있는 항목이 없습니다.

Pool::getAdminByAdminCode(string $code)이라는 방법으로 특정 관리자를 계속받을 수 있습니다.

예를 들어, 당신을 위해 사용 될 수 :

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을 반환한다는 사실에주의하십시오 : 당신의 이름이 혼란을 만들어 제시하여 변수 $adminClass . 엔티티에 대해 하나 이상의 관리자가있는 경우 Pool:getAdminByClass() 방법은 예외가 발생하지 않도록 기본 관리자를 정의 할 수있는 방법을 결정하는 https://github.com/sonata-project/SonataAdminBundle/issues/3908 :

또한 여기 Github에서에 열려 문제가 있습니다. 아무도 그것을 구현하는 데 충분한 신경을 쓰지 않는 것 같습니다. 원할 경우 자유롭게 기부하십시오.