1

当我在管理类中使用 sonata_type_model_list 表单类型时,我正在寻找自定义链接管理类的解决方案。

一个例子:我有一个名为 EntityA 的实体的 2 个管理员:class EntityA class EntityA1Admin class EntityA2Admin

该实体与其他实体以 many_to_one 关系链接:EntityB 和 EntityC。

在 EntityBAdmin 中,我想在 $formMapper->add('entityA','sonata_type_model_list'); 上调用 A1Admin

在 EntityCAdmin 中,我想在 $formMapper->add('entityA','sonata_type_model_list'); 上调用 A2Admin

是否有任何解决方案可以手动设置应由 sonata_type_model_list 调用的管理类?

至少,如果不可能,是否有自定义列表视图中的默认过滤器?(是否可以通过 sonata_type_model_list 字段自定义 $dataGridValues ?)

在此先感谢(我已经花了几个小时在代码中找到解决方案,但我找不到任何明确的解决方案......)

4

1 回答 1

0

如果我是你,我会反对为一个实体使用多个管理员。我会首先尝试使用某种上下文或参数,以区分同一 EntityA 管理员在每种情况下显示什么和不显示什么(而不是为 EntityA 使用两个单独的管理员)。

我相信您想更改显示在 中的过滤器sonata_type_model_list。您可能想尝试一下,以了解您是否在 sonata_type_model_list 窗口中调用了您的 EntityA 管理员:

protected function configureDatagridFilters(DatagridMapper $filterMapper)
{
    $request = $this->getRequest();
    if ($request->query->get('pcode') == '_entity_b_code_') {
        ...
    }
}

然后根据上下文相应地添加或不添加所需的过滤器字段。

于 2013-10-11T12:19:48.657 回答