[英]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.