sonata_type_model_list自定义调用的admin类

时间:2013-10-11 10:50:51

标签: symfony sonata-admin

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

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

此实体与其他实体:EntityB和EntityC在many_to_one关系中链接。

在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?)

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

1 个答案:

答案 0 :(得分: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_') {
        ...
    }
}

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