====== 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 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 ==== 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, )); } }