protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$filers=$datagridMapper->getAdmin()->getFilterParameters();
}
Se puede añadir un filtro simple en un título o cualquier parámetro de nuestra entidad.
El parámetro show_filter permite mostrarlo al cargar la página. Combinado con el valor de $filters, se puede especificar que se mantenga el elemento mostrado después del envío del filtro.
Por ejemplo, se puede configurar el filtro para que se muestre permanentemente:
$datagridMapper
->add('title', null, ['show_filter' => true , 'label' => 'Titre'])
O para mostrarlo solo si ha sido utilizado:
->add('enabled',null,['show_filter' =>!empty($filers['enabled']['value'])?true:null, 'label' => 'Actvé'])
Para una relación oneToMany, si tu entidad está configurada correctamente, puedes simplemente configurarla de la siguiente manera:
$datagridMapper->add('field', null, ['show_filter' => true , 'label' => 'nom du champs']);
Básicamente, no hay nada que hacer. Pero podríamos necesitar filtrar los valores. En este caso, utilizaremos doctrine para modificar la consulta de selección para los valores:
->add('slug', 'doctrine_orm_callback', ['show_filter' =>!empty($filers['slug']['value'])?true:null, 'label' => 'SEO Slug',
'callback' => function($queryBuilder, $alias, $field, $value)
{
$queryBuilder->andWhere($queryBuilder->expr()->like('o.slug', "'%".$value["value"]."%'"));
}
])
También podríamos querer hacer una lista construida dinámicamente por nosotros mismos:
->add('liste', 'doctrine_orm_choice', array(
'label' => 'ma liste'),
'choice',
array(
'choices' => array(
'label value1' => 'value1',
'label value2' => 'value2',
),
'expanded' => true,
'multiple' => true))