Outils pour utilisateurs

Outils du site


symfony_4:fonctionnement:les_formulaires_gestion_des_formulaires

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
symfony_4:fonctionnement:les_formulaires_gestion_des_formulaires [2018/10/23 09:29]
formateur [Les types de champs]
symfony_4:fonctionnement:les_formulaires_gestion_des_formulaires [2022/11/08 10:50] (Version actuelle)
admin [Rendu en twig]
Ligne 48: Ligne 48:
 ===== Les types de champs ===== ===== Les types de champs =====
  
-La liste des différents types de formulaire est présente sur la documentation de Symfony : +Les principaux types de champs :
-  * [[https://symfony.com/doc/current/reference/forms/types.html|Liste des types]]+
  
-Quelques types principaux : 
   * Entité (objet de l'application défini dans l'ORM)   * Entité (objet de l'application défini dans l'ORM)
      * [[https://symfony.com/doc/current/reference/forms/types/entity.html|EntityType]]      * [[https://symfony.com/doc/current/reference/forms/types/entity.html|EntityType]]
Ligne 73: Ligne 71:
      * [[https://symfony.com/doc/current/reference/forms/types/submit.html|SubmitType]]      * [[https://symfony.com/doc/current/reference/forms/types/submit.html|SubmitType]]
      * [[https://symfony.com/doc/current/reference/forms/types/reset.html|ResetType]]      * [[https://symfony.com/doc/current/reference/forms/types/reset.html|ResetType]]
 +
 +La liste complète des types de champs est présente sur la documentation de Symfony : [[https://symfony.com/doc/current/reference/forms/types.html|Liste des types]]
 +
 +===== Les types de champs : Quelques exemples =====
  
 ==== Liste déroulante : ChoiceType ==== ==== Liste déroulante : ChoiceType ====
Ligne 89: Ligne 91:
                'Image' => "IMG",                'Image' => "IMG",
            ),            ),
 +      ))
 +</code>
 +
 +Choix multiple :
 +<code PHP>
 +use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
 +
 +    ...
 +    
 +      ->add('roles', ChoiceType::class, array(
 +         'choices' => array(
 +             'Administrateur' => 'ROLE_ADMIN',
 +             'User' => 'ROLE_USER',
 +             'Coach' => 'ROLE_COACH'
 +          ),
 +         'choices_as_values' => true,
 +         'multiple' => true,
       ))       ))
 </code> </code>
Ligne 99: Ligne 118:
 Attention, required à "true" sera principalement utilisé pour ce type lors de demande de validation vitale (condition d'utilisation par exemple) car il implique la coche obligatoire. Attention, required à "true" sera principalement utilisé pour ce type lors de demande de validation vitale (condition d'utilisation par exemple) car il implique la coche obligatoire.
 <code PHP> <code PHP>
-            ->add('active', CheckboxType::class, array( +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; 
-                'label'    => 'Inclure ce fichier ?', + 
-                'required' => false, +      ... 
-            ))+       
 +       ->add('active', CheckboxType::class, array( 
 +         'label'    => 'Inclure ce fichier ?', 
 +         'required' => false, 
 +       ))
 </code> </code>
 +
 +----
 +
 +==== Exemples généraux ====
 +
 +Quelques exemples :
 +<code PHP>
 +use Symfony\Component\Form\Extension\Core\Type\ResetType;
 +use Symfony\Component\Form\Extension\Core\Type\IntegerType;
 +use Symfony\Component\Form\Extension\Core\Type\NumberType;
 +use Symfony\Component\Form\Extension\Core\Type\EmailType;
 +use Symfony\Component\Form\Extension\Core\Type\TextType;
 +use Symfony\Component\Form\Extension\Core\Type\HiddenType;
 +use Symfony\Component\Form\Extension\Core\Type\FileType;
 +use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 +
 +      ...
 +      
 +      //Ajout du bouton reset
 +      ->add('reset', ResetType::class, array(
 +          'label' => 'Reset'
 +      ));
 +      
 +      //Ajout du champ de nombre entier
 +      ->add('usrAge', IntegerType::class)
 +
 +      //Ajout d'un champ de nombre
 +      ->add('usrMoney', NumberType::class, array(
 +          'attr' => array(
 +              'class' => 'formNumberField',
 +          ),
 +          'invalid_message' => 'Merci de rentrer une valeur sous forme de nombre !',
 +          'required' => 'required',
 +      )
 +      
 +      //Ajout d'un champ mail
 +      ->add('usrEmail', EmailType::class, array(
 +          'required' => 'required',
 +          'invalid_message' => 'Merci de rentrer une adresse mail valide !',
 +      ))
 +      
 +      //Ajout d'un champ text
 +      ->add('username', TextType::class, array(
 +          'disabled' => 'disabled',
 +      ))
 +      
 +      //Ajout d'un champ text masqué absent de la classe, juste utile pour la gestion du formulaire
 +      ->add('editId', HiddenType::class, array(
 +          'mapped' => false,
 +          )
 +      )
 +      
 +      //Ajout de la carte d'identité
 +      ->add('idCard', FileType::class);
 +      
 +      //Ajout du bouton de soumission du formulaire
 +      ->add('save', SubmitType::class, array(
 +          'label' => 'Ajouter'
 +      ));
 +
 +</code>
 +
 +----
 +
 +==== Soumission du formulaire : SubmitType ====
  
 Bouton de soumission du formulaire Bouton de soumission du formulaire
 <code PHP> <code PHP>
-           +use Symfony\Component\Form\Extension\Core\Type\SubmitType; 
-            ->add('save', SubmitType::class, array( + 
-                'label' => 'Ajouter' +      ... 
-            )); +       
-    }+      ->add('save', SubmitType::class, array( 
 +          'label' => 'Ajouter' 
 +      ));
 </code> </code>
  
-Fonction qui permet de configuration le formulaire par defaut on ajoute la classe à la quel fais référence le formulaire +---- 
 + 
 +===== Fonction de configuration : Définition de la classe liée ===== 
 + 
 +Fonction qui permet d'indiquer à symfony la classe à relié au formulaire.
 <code PHP> <code PHP>
 +use App\Entity\Test;
 +
 +    ...
 +    
     public function configureOptions(OptionsResolver $resolver)     public function configureOptions(OptionsResolver $resolver)
     {     {
Ligne 122: Ligne 220:
         ));         ));
     }     }
-}</code> +</code>
  
 ---- ----
  
-==== Exemple complet ====+===== Rendu en twig ===== 
 + 
 +=== Affichage des champs dans le formulaire ===
  
 +Code basique : (Tout en un)
 <code PHP> <code PHP>
-<?php +{% if form.date is defined %} 
-// /src/Form/SWFileType.php +   <div class="form-group inline"> 
-namespace App\Form;+      {{ form_row(form.date) }} 
 +   </div> 
 +{% endif %}    
 +</code>
  
-use App\Entity\SWFile; +Code plus avancé : contrôle de l'emplacement de chaque champs :  
-use Symfony\Component\Form\AbstractType; +<code PHP> 
-use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +{{ form_start(form, {'attr': {'id': 'form_affaire', 'enctype': 'multipart/form-data', 'autocomplete': 'off'}}) }} 
-use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +   {% if form.date is defined %} 
-use Symfony\Component\Form\Extension\Core\Type\SubmitType; +      {{ form_error(form.date) }} 
-use Symfony\Component\Form\FormBuilderInterface; +      <div class="form-group inline"> 
-use Symfony\Component\OptionsResolver\OptionsResolver; +         {{ form_widget(form.date) }} 
-use Symfony\Component\Form\Extension\Core\Type\TextType;+         {{ form_label(form.date, "Date") }} 
 +      </div> 
 +   {% endif %} 
 +{{ form_end(form) }} 
 +</code>
  
-class SWFileType extends AbstractType +Affichage de toutes les erreurs du formulaire dans le cadre de l'usage de rendu sans //form_row// et d'un grand formulaire
-+<code PHP
-    public function buildForm(FormBuilderInterface $builder, array $options) +<ul
-    { +    {% for error in form.vars.errors.form.getErrors(true%} 
-        $builder +        <li>{{ error.message }}</li
-            ->add('name', TextType::class, array( +    {% endfor %} 
-                'attr' =array('maxlength' => 190) +</ul>
-            )) +
-            ->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+{% if form.date is defined %} 
-    +   <div class="form-group inline"> 
-        $resolver->setDefaults(array+      {{ form_widget(form.date}} 
-            'data_class' =SWFile::class, +      {{ form_label(form.date, "Date") }} 
-        )); +   </div> 
-    +{% endif %} 
-}+ 
 +{% if form.date1 is defined %} 
 +   <div class="form-group inline"> 
 +      {{ form_widget(form.date1) }} 
 +      {{ form_label(form.date1, "Date 1") }} 
 +   </div> 
 +{% endif %} 
 + 
 +{% if form.date2 is defined %} 
 +   <div class="form-group inline"> 
 +      {{ form_widget(form.date2}} 
 +      {{ form_label(form.date2, "Date 2") }
 +   </div> 
 +{% endif %}
 </code> </code>
symfony_4/fonctionnement/les_formulaires_gestion_des_formulaires.1540279768.txt.gz · Dernière modification: 2019/12/08 08:43 (modification externe)