filtro de cuadrícula de datos para objeto de relación como campo de texto (en lugar de menú desplegable) en sonata admin en symfony 2.4
Tengo entidad 'Acción' con relación a 'Usuario'. Creó el controlador Admin CRUD en SonataAdminBundle. Todo funciona bien, excepto que el filtro de usuario se representa como una lista desplegable. Tengo un recuento de usuarios de 8k y estoy creciendo, así que debes ver por qué esto es un problema.
Quiero que el filtro de usuario sea entrada de texto y al enviar para buscar conLIKE %username%
En este momento agrego un filtro de usuario como este:$datagridMapper->add('user')
.
Sé que puedo agregar el tipo de filtro y el tipo de campo, pero no puedo encontrar la combinación y las opciones correctas. Información encontrada enhttp://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html Pero todavía no hay éxito.
Solución finalSiguiendo la respuesta de Alex Togo, utilicé este código:
$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'
))