您如何通过Sonata获得实体的管理服务?

时间:2018-07-23 21:23:39

标签: symfony sonata-admin sonata

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

我想为这些实体中的任何一个生成到奏鸣曲编辑页面的链接。

我可以使用get_class函数获得Entity对象的全限定类名。我想不出一种将该类提供给Sonata并使其返回代表该类的Admin的服务对象或服务ID的方法。

如果可以的话,可以使用Admin类的generateUrl方法来创建指向编辑表单的链接。

1 个答案:

答案 0 :(得分:0)

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

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');