Bonjour à toutes et tous,

Je suis en train de créer une petite appli web sous Symfony, ce qui est une première pour moi.

Cette appli contient un formulaire permettant de filtrer des données affichées dans un tableau Html,, le formulaire n'intervient pas dans un context CRUD, il n'est pas associé à une Entity.

Je créé le formulaire directement depuis mon controlleur en ajoutant le code suivant dans la méthode associée à ma route :

$activeFilter = $session->get('activeFilter') ?? [];
$formOptions = ['translation_domain' => FALSE, 'block_name' => 'filter'];
$filterForm = $this->createFormBuilder($activeFilter, $formOptions)
...

Ce que je veux

Je voudrais changer le nom du formulaire, c'est à dire le prefix des attributs "id" et "name" des champs générés.
Le prefix par défaut est : "form", je voudrais le remplacer par le préfix "filter".

Ce que j'obtiens

J'ai essayé de multiples tentatives de paramétrages via les options passées à "createFormBuilder", pas moyen... soit j'ai une erreur, soit le paramétrage n'est pas le bon.

Je n'ai pas trouvé mon bonheur sur le net.

Question

Est-il possible de changer le nom du formulaire si je créé mon formulaire depuis mon contrôleur via la méthode "createFormBuilder" ? si oui, comment ?
Sinon, qu'elle est la méthode la plus appropriée pour créer un formulaire n"étant pas associé à une Entity ?

Merci d'avance pour vos lumières,

Mickaël

1 réponse


Soundboy39
Auteur
Réponse acceptée

Bon du coup je m'auto-répond

J'ai opté pour la piste de la FormFactory en instanciant le formulaire de cette manière :

$filterForm = $this->get('form.factory')->createNamed('filter', 'FilterType', $data, $formOptions);

Cela répond à mes attentes, c'est un peu plus "complexe" que le code initial car cela demande la création d'une classe supplémentaire.
Mais au final, cela allège mon contrôleur et ce n'est peut être pas plus mal