如何使用 Sonata 获得实体的管理服务?

How do you get an Entity's Admin service with Sonata?

假设我查询了一堆不同的混合实体。假设所有这些实体都在一个单一的继承中 table,并且有十几种不同的类型。

我想为任何这些实体的 Sonata 编辑页面生成一个 link。

我可以使用 get_class 函数获取实体对象的完全限定 class 名称。我想不出一种方法将 class 提供给 Sonata 并让其 return 代表 class.

的服务对象或管理员的服务 ID

如果可以的话,我可以使用 Admin class 的 generateUrl 方法来创建 link 编辑表单。

所有管理服务都存储在一个池中。

Github : https://github.com/sonata-project/SonataAdminBundle/blob/3.x/src/Admin/Pool.php

可通过服务访问此池 sonata.admin.pool

你的魔法方法就在这个服务里面:

$admin = $this->get('sonata.admin.pool')->getAdminByClass('YOUR CLASS NAME');