Outils pour utilisateurs

Outils du site


symfony_4:exemples:formulaire_swfile

Exemple : Gestion des formulaires

Symfony permet d'utiliser une mécanique nommé FormType, elle permet de créer un formulaire qui pourra être utilisé par plusieurs méthode cela permet d'utiliser le même formulaire par plusieurs méthode par exemple update et create d'une entité

Tout d'abord vous devez créé le fichier vous devez ajouter le namespace et les use comme celui de votre entité et des différent type

<?php
// /src/Form/TestType.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\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
 
class TestType extends AbstractType
{

Viens ensuite la fonction principale qui construit le formulaire vous pouvez ajouté des champs en fonction du nom des attribut de l'entité, et des attribut dans la section attr

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class, array(
                'attr' => array('maxlength' => 190)
            ))
 
            ...
      }

Viens ensuite les choiceType, qui sont des listes déroulantes

            ->add('type', ChoiceType::class, array(
                'choices'  => array(
                    'Style (CSS)' => "CSS",
                    'JavaScript' => "JS",
                    'Image' => "IMG",
                ),
            ))
            ->add('src', TextType::class, array(
                'attr' => array('maxlength' => 190)
            ))

Voilà maintenant une checkbox avec si l'element est requis

            ->add('active', CheckboxType::class, array(
                'label'    => 'Inclure ce fichier ?',
                'required' => false,
            ))

Bouton de soumission du formulaire

            ->add('save', SubmitType::class, array(
                'label' => 'Ajouter'
            ));
    }

Fonction qui permet de configuration le formulaire par defaut on ajoute la classe à la quel fais référence le formulaire

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => Test::class,
        ));
    }
}

Exemple complet

<?php
// /src/Form/SWFileType.php
namespace App\Form;
 
use App\Entity\SWFile;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
 
class SWFileType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class, array(
                'attr' => array('maxlength' => 190)
            ))
            ->add('type', ChoiceType::class, array(
                'choices'  => array(
                    'Style (CSS)' => "CSS",
                    'JavaScript' => "JS",
                    'Image' => "IMG",
                ),
            ))
            ->add('src', TextType::class, array(
                'attr' => array('maxlength' => 190)
            ))
            ->add('active', CheckboxType::class, array(
                'label'    => 'Inclure ce fichier ?',
                'required' => false,
            ))
            ->add('save', SubmitType::class, array(
                'label' => 'Ajouter'
            ))
        ;
    }
 
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => SWFile::class,
        ));
    }
}
symfony_4/exemples/formulaire_swfile.txt · Dernière modification: 2019/12/08 08:41 (modification externe)