簡體   English   中英

如何在SonataAdminBundle中獲取當前管理類?

[英]How in SonataAdminBundle get current admin class?

如何在SonataAdminBundle中獲取當前的管理類而不使用AdminPool?

現在我正在嘗試這樣做

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

但是這種方法有問題。 如果該實體與管理員的多個類別相關聯,則將引發異常。 有沒有辦法找出管理服務應正確處理當前路由的方式?

謝謝!

如果您為此實體的課程注冊了多個管理員,則沒有人可以為您選擇正確的管理員。

您仍然可以使用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命名為變量,這表明您造成了混淆。

另請注意,Github上存在一個未解決的問題: https : //github.com/sonata-project/SonataAdminBundle/issues/3908,用於確定當一個實體有多個管理員時可以定義默認管理員的方法,這樣Pool:getAdminByClass()方法不會引發異常。 似乎沒有人對此實施有足夠的關注,如果需要,可以隨時在此做出貢獻。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM