Les Formulaires dans
Symfony
(Symfony forms)
UP Web
AU: 2023/2024
1
Plan
1. Introduction
2. Création d'un formulaire
3. Types de champs
2
Introduction
❑ Créer et traiter des formulaires HTML est une tâche difficile et
répétitive. Vous devez gérer le rendu des champs de
formulaire HTML, valider les données soumises, mapper les
données du formulaire en objets, et bien plus encore.
❑ Symfony intègre une fonctionnalité de formulaire puissante
qui offre toutes ces fonctionnalités et bien d'autres pour des
scénarios vraiment complexes.
3
Création d’un formulaire
• Un formulaire Symfony est l’image d’un objet existant
Nom
Age
• Un formulaire sert à alimenter un objet.
• Un formulaire sert à récupérer des informations indépendantes de
n’importe quel objet.
• Pour installer les dépendances du formulaire, il faut exécuter cette
commande: composer require symfony/form
4
Création d’un formulaire
On peut définir un formulaire soit:
• Dans le contrôleur
• Dans un autre fichier qui sera appelé par le contrôleur
5
Création d’un formulaire
Méthode 1: Création d’un formulaire dans le contrôleur
Pour indiquer les champs à ajouter au formulaire on utilise la
méthode add du FormBuilder
Cette méthode contient 3 paramètres :
1) le nom du champ dans le formulaire
2) le type du champ
3) Un tableau (array,[]) qui contient des options spécifiques au type
du champ
6
Création d’un formulaire
Problématique:
Comment alléger le contrôleur ?
Solution:
Générer une classe qui s’occupe de la construction d’un formulaire
Comment?
utilisation de la commande:
php bin/console make:form FormName
symfony console make:form FormName
7 7
Création d’un formulaire
Méthode 2: Utilisation la dépendances MakerBundle
La commande suivante nous permet de créer un Formulaire :
php bin/console make:form FormName
symfony console make:form FormName
Maker vous demandera si votre formulaire est associé à une entité
ou non. Répondez selon votre besoin.
Un objet dont le nom est « FormNameType » sera
automatiquement créé dans le dossier src/Form et qui contient une
fonction buildForm
8
Création d’un formulaire
Récupération du formulaire dans le contrôleur
La récupération du formulaire au niveau des contrôleurs devient
beaucoup plus facile :
9 9
Types de champs
Types dans le formulaire:
Il existe différents types proposés par Symfony pour les champs d'un
formulaire dont chaque champ possède un nom, un type et des
options.
10
Types de champs
Champ à choix particulier:
Les champs à choix (choice Type) seront chargés à partir des
éléments d’une entité Doctrine. Il existe différentes façons
d'implémenter ces choices type. Les plus importants sont les deux
attributs expanded et multiple qui construisent la façon d'afficher
cette liste de choix.
11
Formulaire dans TWIG
L’envoi du formulaire à la page twig
➔ return $this->render('formation/.html.twig', ['formA' => $form]);
Affichage du formulaire dans TWIG
⮚ Afficher la totalité du formulaire avec la méthode form()
qui affiche le formulaire sans aucune mise en forme
{{ form(nomDuFormulaire) }}
12
Formulaire dans TWIG
Afficher les composants du formulaire séparément un à un d’une façon personnalisée
{{ form(nomDuFormulaire) }}
=
Form_start(): est l’équivalent de <form> en HTML
Form_errors(): affiche les erreurs relatives au champ passé en argument
Form_label(): affiche le label HTML d’un élément du formulaire
Form_widget(): affiche le champ du formulaire
Form_help(): affiche l’aide relatives au champ donné
Form_row(): est l’équivalent de form_label + form_errors + form_widget
13
Formulaire dans TWIG
14
Rendu d’un formulaire
Et Finalement, pour créer et envoyer le rendu d'un formulaire vers notre vue, on
peut suivre l'exemple de ce code:
use Doctrine\Persistence\ManagerRegistry;
…
public function add (ManagerRegistry $doctrine){
$product = new Product();
$form= $this->createForm(ProductType::class,$product);
$form->handelRequest()*;
if ($form->isSubmitted()**){
…
}
Retun $this->renderForm(“add.html.twig”,array(‘form”=>$form)
ou
Retun $this->render(“add.html.twig”,array(‘form”=>$form->createView()) }
15
Rendu d’un formulaire
* La méthode handleRequest() de la classe Form permet de
récupérer les données saisies dans les inputs du formulaire.
** La méthode isSubmitted() de la classe Form permet de savoir si
on est effectivement en méthode POST
16
Conclusion
Symfony Forms nous sera très utile car, à part la création du
formulaire en lui-même, il nous permettra d'effectuer facilement
des contrôles de saisies, tout en offrant une grande variété de
personnalisation ( Messages d'erreurs, CSS, etc..)
17
Références
• https://symfony.com/doc/current/forms.html
• https://symfony.com/legacy/doc/forms/1_4/fr/03-forms-for-web-designers
18