我有大量的城市。我想在我的管理员中按城市名称进行过滤。因为大量的记录我必须使用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()
);
}
])
答案 0 :(得分:0)
所以它适用于脏黑客。我用自己的替换默认视图sonata_type_model_autocomplete.html.twig,其中我删除了行'_context': 'filter'
。希望这个解决方案对某些人有用。
答案 1 :(得分:0)
这似乎是一个错误。我已经打开了一个新的请求,以解决此问题。
https://github.com/sonata-project/SonataDoctrineMongoDBAdminBundle/pull/287