FormType
FormType) qui fusionne la notion de formulaire, de champs de
formulaire ou encore de groupes de champs de formulaire.FormType suit le schéma suivant :
FormType (la racine, mère de tous les types)
├─ TextType (text input)
│ ├─ EmailType
│ ├─ PasswordType
│ ├─ ...
│ └─ UrlType
├─ ChoiceType (select, radio, checkboxes)
│ ├─ CountryType
│ ├─ EntityType
│ └─ ...
├─ DateType (champs simples ou multiples pour les données temporelles)
│ └─ ...
└─ ...createFormBuilder() permet de générer un formulaire.
$auteur = new Auteur();
$form = $this->createFormBuilder($auteur)
->add('aut_nom', TextType::class)
->add('prenom', TextType::class, ['property_path' => 'aut_prenom'])
->add('save', SubmitType::class, ['label' => 'Enregistrer'])
->getForm(); $this->render('auteur/newAuteur.html.twig', ['form' => $form, ]);{{ form(form) }}Symfony\Component\HttpFoundation\Request en paramètre
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// si des données ont été soumises et sont valides
$auteur = $form->getData();
// traitement de l'action (sauvegarde dans la BD, ...)
return $this->redirectToRoute('auteurById', ['id' => $auteur->getId()]);
}
return $this->render('auteur/newAuteur.html.twig', ['form' => $form, ]);Validation de formulaire :
Via des annotations dans les Entités (compatible avec les annotations de Doctrine) :
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Auteur
{
#[Assert\NotBlank]
public string $aut_nom;
#[Assert\NotBlank]
public string aut_prenom;
}