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();
}