繁体   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