Фильтр сетки данных для объекта отношения в виде текстового поля (в раскрывающемся списке) в sonata admin в symfony 2.4
У меня есть сущность «Действие» по отношению к «Пользователю». Создан Admin CRUD контроллер в SonataAdminBundle. Все работает отлично, за исключением пользовательского фильтра, который отображается как выпадающий список. У меня 8000 пользователей и растет, поэтому вы должны понять, почему это проблема.
Я хочу, чтобы пользовательский фильтр был для ввода текста и отправки для поиска сLIKE %username%
Прямо сейчас я добавляю пользовательский фильтр вот так -$datagridMapper->add('user')
.
Я знаю, что могу добавить тип фильтра и тип поля, но не могу найти правильную комбинацию и параметры. Нашел информацию оhttp://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html но все равно безуспешно.
Окончательное решениеПосле ответа Алекса Того я использовал этот код:
$datagridMapper->add('user', 'doctrine_orm_callback', array(
'callback' => function($queryBuilder, $alias, $field, $value) {
if (empty($value['value'])) {
return;
}
$queryBuilder->leftJoin(sprintf('%s.user', $alias), 'u');
$queryBuilder->where('u.username LIKE :username');
$queryBuilder->setParameter('username', '%'.$value['value'].'%');
return true;
},
'field_type' => 'text'
))