dove2199 2017-12-05 11:54
浏览 48
已采纳

SonataAdminBundle如何获得当前的管理类?

How in SonataAdminBundle get the current admin class without using AdminPool?

Now I'm trying to do it like this

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

But this method has a problem. If the entity is associated with several classes of the admin, an exception will be thrown. Is there a way to find out what exactly the admin service should handle the current route?

Thanks!

  • 写回答

1条回答 默认 最新

  • dsqdpn31467 2017-12-05 14:06
    关注

    If you have multiple admins registered for this entity's class, nothing can choose the correct one for you.

    You can still get a specific admin with the method Pool::getAdminByAdminCode(string $code).

    For example, an usage for you could be:

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

    Please pay attention to the fact that the Pool::getAdminByClass(string $class) returns an Admin and not a class string: you named your variable $adminClass which suggests you made this confusion.

    Also note that there is an open issue on Github here: https://github.com/sonata-project/SonataAdminBundle/issues/3908 to determine a way to be able define default admins when there are more than one admin for an entity, so that the Pool:getAdminByClass() method doesn't throw an exception. Nobody seems to have care enough about this to implement it, feel free to contribute there if you want.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi