Фильтр сонаты через другую сущность - PullRequest
0 голосов
/ 03 апреля 2019

Допустим, я нахожусь в виде списка для моего администратора 'Example', а в примере есть ManyToOne с моей сущностью 'Foo'.Затем у Foo есть ManyToOne с другой сущностью под названием 'Bar'.

Например, в моем представлении списка я хотел бы иметь возможность фильтровать по сущности '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',
        ]);
}

Это дает мне следующую ошибку:

Аргумент 1 передан Sonata \ AdminBundle \ Form \ DataTransformer \ ModelToIdPropertyTransformer :: __ construct ()должен реализовывать интерфейс Sonata \ AdminBundle \ Model \ ModelManagerInterface, значение NULL которого вызывается в /var/www/symfony/vendor/sonata-project/admin-bundle/src/Form/Type/ModelAutocompleteType.php в строке 37

Любая помощь будет отличной.

...