Table des matières

Le Fichier xxxFormType.php

Exemple de fichier

TestFormType.php
<?php
 
namespace App\Form;
 
use App\Entity\Test;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
 
class TestMailFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('num', HiddenType::class)
            ->add('mail', EmailType::class, [
                'label' => 'Entrez votre adresse e-mail',
                'attr' => ['class' => 'form-control form-control-lg', 'placeholder' => 'Adresse Email']
            ])
            ->add('acc_mailing', CheckboxType::class, ['required' => false, 'label'=>'Accepter mailing'])
            ->add('acc_contract', CheckboxType::class)
            ->add('submit', SubmitType::class, [
                'attr' => ['class' => 'btn btn-primary btn-lg btn-block'],
                'label' => 'Enregistrer'
            ]);
    }
 
    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => Test::class,
        ]);
    }
}

Les Champs de formulaires

Options des champs

Attr

['attr' ⇒ ['attribut1'⇒'valeur','attribut2'⇒'valeur']]

Utilisé pour définir des attributs de la balise HTML du champ.

$builder->add('mail', EmailType::class, ['attr' => ['class' => 'form-control form-control-lg', 'placeholder' => 'Adresse Email']]);

Ce qui nous affichera en HTML

<input type="email" id="test_mail_form_mail" name="test_mail_form[mail]" required="required" class="form-control form-control-lg form-control" placeholder="Adresse Email" />

Label

['label' ⇒ 'Mon Label']

$builder->add('mail', EmailType::class, ['label' => 'Entrez votre adresse e-mail']);

Required

['required' ⇒ false]

Par défaut un champ est considéré comme Required,
pour le mettre non Required il faut mettre explicitement l'option ['required' ⇒ false]

$builder->add('acc_mailing', CheckboxType::class, ['required' => false])