简体   繁体   English

sonata admin mongodb中的自动完成过滤器

[英]Autocomplete filter in sonata admin mongodb

I have large collection of cities. 我有很多城市。 I want in my admin to filter by city name. 我想在我的管理员中按城市名称进行过滤。 Because of large number of records i have to use sonata_type_model_autocomplete. 因为大量的记录我必须使用sonata_type_model_autocomplete。 It works almost perfect in form. 它的形式几乎完美。

            $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()
                    );
                }
            ]);

But when i try to do this in filter i have an error: 但是,当我尝试在过滤器中执行此操作时,我有一个错误:

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

Code for filter: 过滤代码:

            $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()
                    );
                }
            ])

So it will work well with dirty hack. 所以它适用于脏黑客。 I replaced default view sonata_type_model_autocomplete.html.twig with my own, where i remove line '_context': 'filter' . 我用自己的替换默认视图sonata_type_model_autocomplete.html.twig,其中我删除了行'_context': 'filter' Hope this solution can be useful for somebody. 希望这个解决方案对某些人有用。

It seems to be a bug. 这似乎是一个错误。 I've opened a new pull request to fix this problem. 我已经打开了一个新的pull请求来解决这个问题。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM