Formulaires Symfony pour modifier vos requêtes DQL

Le titre est un peu étrange mais dans la réalité ça fonctionne !

Les formulaires Symfony sont vraiment très simple à utiliser, sûrement le composant le plus enfantin qui soit !

Petite démonstration avec le LexikFormFilterBundle qui permets d’ajouter des conditions en DQL dans vos requêtes.
Prenons le cas d’un date range. On aimerait avoir un sélecteur qui nous affiche soit un champ date qui filtrerait les résultats avec une date >= ou alors le sélecteur nous propose de choisir entre une date de début et une date de fin.

Installons le bundle en premier.


// Ajout dans composer.json
composer require lexik/form-filter-bundle.

// in AppKernel::registerBundles()
$bundles = array(
// ...
new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(),
// ...
);

On va créer un formulaire qui regroupera:

Et également un MyFilterType qui utilisera notre formulaire de filtre.

Voici le résultat :

On notera l’utilisation dans cet exemple de la fonction DATE qui vient de la librairie DoctrineExtension

Il reste néanmoins un petit peu de javascript à mettre en place pour afficher l’un ou l’autre formulaire en fonction du sélecteur, je vous laisse libre d’implémenter ça vous même !

Et voilà ! je n’ai pas détaillé le principe du LexikFormFilterBundle, car il manque néanmoins la partie où on initialise la requête avec le formulaire, mais vous pouvez en lire plus ici à ce sujet.

J’espère que ça vous donnera envie de faire plein de formulaire !

Voir l’étude de cas
Lire l’article
Voir le témoignage
Fermer