Classe FormBuilder
Dans le contrôleur, on aura :
<?php namespace App\Controller; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class ProfileController extends Controller { public function ajouterAction($id) { $profile = new Profile(); // Instanciation du fromBuilder $formBuilder = $this->createFormBuilder($profile); // Ajout des champs $formBuilder // Syntaxe Symfony 2 //->add('id', 'text') ->add('id', TextType::class) ->setAction($this->generateUrl('lpars_cours_formulaires_formbuilder'));; // Génération du formulaire $form = $formBuilder->getForm(); return $this->render('LPARSBundle:Diablo:ajouter.html.twig', array( 'form' => $form->createView())); } ?>
Côté vue, il n'y a plus qu'à ajouter le formulaire
{{ form_start(form) }} {{ form_errors(form) }} {{ form_widget(form) }} {{ form_end(form) }}
On obtient alors le formulaire
A noter l'utilisation du jeton de sécurité pour lutter contre les Cross-site request forgery.
Types de champs
Récupération des données
// src/Controller/ProfileController // Récupération de la requête $request = Request::createFromGlobals(); // Vérification de la méthode if ($request->getMethod() == 'POST') { // Récupération des données de la requête $form->handleRequest($request); // Récupération des données du formulaire $profile = $form->getData(); }