I filtri sono géré nella méthode configuraFiltriDatagrid
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$filers=$datagridMapper->getAdmin()->getFilterParameters();
}
Si può aggiungere un filtro semplice su un titolo o n’qualsiasi parametroètre della nostra entitàé.
Il parametroètre show_filter permette di’visualizzare questo al caricamento della pagina. Combiné con il valore di $filters possiamo spécertificare di mantenere l’élément affiché aprèla sottomissione del filtro.
Per esempio, si può dire d’mostrare sempre il filtro:
$datagridMapper
->add('title', null, ['show_filter' => true , 'label' => 'Titre'])
O oppure dire di l’mostra solo se ha été utileé
->add('enabled',null,['show_filter' =>!empty($filers['enabled']['value'])?true:null, 'label' => 'Actvé'])
Per una relazione oneToMany, verificheremo se la vostra entitàé è configurato correttamenteé, potete configurare semplicemente come segue :
$datagridMapper->add('field', null, ['show_filter' => true , 'label' => 'nom du champs']);
In sostanza non’Non c'è nulla da fare. Ma potremmo avere bisogno di filtrare i valori. In tal caso, useremo doctrine per modificare la richiestaêtè di séselezione dei valori:
->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"]."%'"));
}
])
Potremmo anche voler fare una lista costruita dinamicamente da noi stessi:
->add('liste', 'doctrine_orm_choice', array(
'label' => 'ma liste'),
'choice',
array(
'choices' => array(
'label value1' => 'value1',
'label value2' => 'value2',
),
'expanded' => true,
'multiple' => true))
Adattare l’esempio alla versione installata
Gli esempi Symfony e Sonata rimangono legati alle versioni indicate nell’articolo. Symfony 4.x e Symfony 6.2 non sono più supportati: per un progetto attuale, utilizzate un ramo mantenuto e la documentazione corrispondente esattamente alle vostre dipendenze.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Prima di riprendere il codice, controllate le firme, i servizi, le rotte e i template interessati. Aggiungete poi un test funzionale che copra le autorizzazioni, il codice HTTP e il risultato visibile.
Riferimento : versioni di Symfony supportate.