当我在管理类中使用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?)
感谢提前(我已经花了几个小时在代码中找到解决方案,但我找不到任何明确的解决方案......)
答案 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_') {
...
}
}
然后根据上下文添加或不添加所需的过滤器字段。