奏鸣曲过滤器通过另一个实体

时间:2019-04-03 09:29:31

标签: symfony sonata-admin sonata symfony-sonata

可以说我在管理员“示例”的列表视图中,并且示例中有一个ManyToOne和我的实体“ Foo”。然后,Foo与另一个名为“ Bar”的实体有一个ManyToOne

例如,在我的列表视图中,我希望能够按实体“ Bar”进行过滤,但也可以使用类似ModelAutocompleteType的东西。原因是,实体Bar有很多记录,而对于EntityType之类的东西来说却有很多记录。

同样值得一提的是我的示例实体,我有一个名为getBar的方法。我尝试了以下方法:

protected function configureDatagridFilters(DatagridMapper $filter)
{
    $filter
        ->add('foo.bar', CallbackFilter::class, [
            'callback' => function ($queryBuilder, $alias, $field, $value) {
                if (!isset($value['value'])) {
                    return;
                }

                $queryBuilder
                    ->join('e.foo', 'f')
                    ->join('f.bar', 'b');
            },
        ], ModelAutocompleteType::class, [
            'property' => 'name',
        ]);
}

这给了我以下错误:

  

传递给Sonata \ AdminBundle \ Form \ DataTransformer \ ModelToIdPropertyTransformer :: __ construct()的参数1必须实现接口Sonata \ AdminBundle \ Model \ ModelManagerInterface,给定为null,在/ var / www / symfony / vendor / sonata-project /中调用第37行的admin-bundle / src / Form / Type / ModelAutocompleteType.php

任何帮助都会很棒。

0 个答案:

没有答案