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:42]
formateur [Soumission du formulaire : SubmitType]
symfony_4:fonctionnement:les_formulaires_gestion_des_formulaires [2022/11/08 10:50] (Version actuelle)
admin [Rendu en twig]
Ligne 91: 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 101: 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> 
 + 
 +---- 
 + 
 +==== 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> </code>
  
Ligne 113: Ligne 195:
 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(       ->add('save', SubmitType::class, array(
           'label' => 'Ajouter'           'label' => 'Ajouter'
       ));       ));
-     
 </code> </code>
  
 ---- ----
  
-===== Fonction de configuration : création du formulaire =====+===== Fonction de configuration : Définition de la classe liée =====
  
 Fonction qui permet d'indiquer à symfony la classe à relié au formulaire. Fonction qui permet d'indiquer à symfony la classe à relié au formulaire.
Ligne 136: 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.1540280521.txt.gz · Dernière modification: 2019/12/08 08:43 (modification externe)