Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Découvrir Symfony3

Parcourir les types de formulaires

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Pour ne pas surcharger les actions de contrôleurs, il est souvent plus intéressant de créer des types pour vos formulaires. Apprenez à organiser vos formulaires et votre code.
05:49

Transcription

Alors, notre petit formulaire, comme ça, c'est pas mal mais c'est un peu embêtant. Pourquoi c'est embêtant ? Parce que si j'ai besoin de réutiliser ce formulaire à un autre endroit, dans une autre action, je vais devoir réécrire la même chose. Je vais devoir réécrire le add, tous les add, Imaginons dans les 5 ou 6, ça va être compliqué. Puis, ça va faire la duplication de code. Et moi, la duplication de code, je ne sais pas pour vous mais je n'aime pas ça. Et comme je n'aime pas ça, je vais me baser sur une technique Symfony très sympa. Attention, pas les types de champs mais les types de formulaires. Vous pouvez créer, abstraire en fait, cette partie-là dans un type de formulaire et comme ça, ici, dans l'action de Controller, créer votre formulaire à partir de ce type de formulaire. Ça c'est bien, ça vous permet d'avoir du code clair à un endroit bien précis. Ça vous évite de faire de la copie de code, de la duplication. On va se créer un nouveau répertoire ici qui va s'appeler Form. Et puisqu'on fait les choses bien et que c'est comme ça qu'il faut faire. On va créer un nouveau répertoire à l'intérieur encore, qu'on va appeler Type. A l'intérieur de Type ici, on va créer un fichier qui va s'appeler MyFormType.php. Alors attention, Type, c'est obligatoire ici. Par contre, le reste, ça vous appartient. Ça, c'est une class. php toujours comme d'habitude, le namespace, bien sûr. Donc ça va être du AppBundle, Form et Type. Attention, respectez bien ce que vous avez mis, le nommage est important. Ne vous inquiétez pas, s'ils ne le trouvent pas d'origine c'est juste parce qu'il a du mal à parcer. Il va y venir, il n'y a pas de problème, ne vous inquiétez pas. Au bout d'un moment, ça va finir par fonctionner, il n'y a pas de souci. Ensuite ici, qu'est-ce que c'est ? C'est une class. Comment elle va s'appeler ? MyFormType, comme ça et vous allez faire un extends de AbstractTyp, Y-P, celui-ci. Attention, il y a AbstractTypeExtension et AbstractType. Nous, c'est celui-ci que l'on veut. Une fois que vous aurez fait ça, on sera bon. Ah tiens, il y a eu un petit problème sur le use. Ça arrive, ce n'est pas très grave. On va couper cette partie-là et mettre là. Ok, c'est mieux comme ça. Une fois que vous aurez fait ça, vous serez ok pour démarrer. Ça veut dire quoi démarrer ? L'AbstractType lui va ici définir tout un tas de choses. La seule chose dont vous aurez besoin, c'est le buildForm. C'est lui qui va vous permettre de construire le formulaire. Tout le reste derrière, c'est des choses importantes que vous pourrez voir après. Mais bien sûr, ici nous, on se base sur des données qui vous permettent de démarrer donc buildForm. On va ici sur changer la public function Build. Si vous faites ça, vous allez voir que ça va vous crier dessus. Je vais vous expliquer pourquoi ça vous crie dessus. On va ouvrir la fonction, et là regardez, ça reste rouge. Ça reste rouge parce qu'on vous dit que ça doit être compatible avec la class que vous étendez. Comment on va respecter cette compatibilité ? Eh bien, on va essayer de la respecter simplement en injectant ce qu'il lui faut. Le premier, ici paramètre, doit obligatoirement être typé avec un FormBuilderInterface Attention, pas celui de Test mais bien celui des composants Symfony donc composant Form que l'on va appeler tout simplement, pas builderInterface mais builder comme ça. Ce sera plus propre. Et ensuite, on doit lui fournir un array d'options. Bon ça, vous le renseignez parce que il faut. Mais ce n'est pas obligatoire de le passer. De tout façon, ça peut rester comme ça. Si vous allez regarder le BuildForm, attention, alors là, il nous dit n'importe quoi mais c'est vrai que si vous allez regarder le BuildForm qui est là, vous verrez que c'est un array d'options tout simplement. Ça se sera automatiquement rempli, ne vous inquiétez pas. Bon maintenant, comment on fait ? Pour constituer le formulaire en fait, regardez, on va faire à peu près la même chose que ça. Donc ça en fait, on va juste recopier ici toute cette partie. On va la couper, on va garder ça de côté avec une petite erreur pour le moment, et puis ici, on ne va pas utiliser this create Builder. Non, parce que regardez, on dispose déjà d'un builder donc on va le mettre ici builder add, on va le laisser comme ça. Et à la fin, on ne va pas mettre le getForm parce que ça, ce sera automatique aussi. En fait, le Type sera récupéré et ça va fonctionner tout seul. Attention à bien respecter ici, donc à reproduire le use sinon ça ne marchera pas. Et à l'enlever ici parce qu'on n'en a plus besoin. Pensez à faire le ménage de temps en temps. Maintenant qu'on a fait ça, il va falloir bien sûr qu'on puisse créer le formulaire, donc avec form à cet endroit-là, on va faire un this comme ça, directement createForm et on va pouvoir lui passer un type. Quel va être le type ? Le type, c'est MyFormType ::class. Et ça, c'est suffisant pour que ça fonctionne, c'est tout ce qu'on a à faire. Alors, une fois que vous aurez fait ça, vous retournerez sur votre page et vous rechargerez. Et là, vous obtiendrez absolument la même chose, mais vous ne serez plus du tout basé sur une construction directement ici dans l'action de Controller mais sur un type de formulaire. Je vous invite à chaque fois à créer des types de formulaire bien précis que vous allez construire à l'intérieur d'un BuildForm avec des add proprement à cet endroit-là parce que ça, ça vous permettra d'extraire cette partie du code. Il ne faut pas que cette partie du code soit dans les actions de Controller. Sachez que pour que ce soit un peu valide, votre code, normalement ici, ne doit pas excéder plus de 15 lignes à l'intérieur d'une action. Ça, il faut essayer au maximum de le respecter. Et pour y arriver, par exemple : le FormType, c'est une des techniques très intéressantes qui permet d'extraire du code. C'est génial parce que si dans une autre action, j'ai besoin de réutiliser le formulaire, je vais reproduire juste cette ligne-là et cette ligne-là pour passer le formulaire à la vue. Et je vais garder la construction de mon formulaire dans une class à part bien proprement.

Découvrir Symfony3

​Prenez en main Symfony3 pour développer des applications riches. Apprenez à créer des routes et des contrôleurs, créez des formulaires, sauvegardez des données, etc.

3h27 (45 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :7 avr. 2016
Durée :3h27 (45 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !