1

我有大量的城市。我想在我的管理员中按城市名称过滤。由于大量记录,我必须使用 sonata_type_model_autocomplete。它在形式上几乎完美。

            $form->add('city', 'sonata_type_model_autocomplete',
            [
                'property' => 'name',
                'model_manager' => $form->getAdmin()->getModelManager(),
                'class' => 'AppBundle\Document\Geography\City',
                'to_string_callback' => function($e, $p) {
                    return sprintf('%s, %s, %s, %s',
                        $e->getName(), $e->getRegion()->getName(), $e->getRegion()->getCountry()->getName(), $e->getRegion()->getCountry()->getContinent()->getName()
                    );
                }
            ]);

但是当我尝试在过滤器中执行此操作时出现错误:

Error: Call to a member function isGranted() on null

过滤器代码:

            $datagridMapper->add('city', null, ['show_filter' => true], 'sonata_type_model_autocomplete',
            [
                'property' => 'name',
                'context' => 'filter',
                'admin_code' => 'app.admin.custom_page_text',
                'model_manager' => $datagridMapper->getAdmin()->getModelManager(),
                'by_reference' => 'false',
                'to_string_callback' => function($e, $p) {
                    return sprintf('%s, %s, %s, %s',
                        $e->getName(), $e->getRegion()->getName(), $e->getRegion()->getCountry()->getName(), $e->getRegion()->getCountry()->getContinent()->getName()
                    );
                }
            ])
4

2 回答 2

0

所以它适用于肮脏的黑客。我用我自己的替换了默认视图 sonata_type_model_autocomplete.html.twig,我删除了 line '_context': 'filter'。希望这个解决方案对某人有用。

于 2016-07-19T08:30:21.703 回答
0

这似乎是一个错误。我已经打开了一个新的拉取请求来解决这个问题。

https://github.com/sonata-project/SonataDoctrineMongoDBAdminBundle/pull/287

于 2018-09-05T13:56:12.497 回答