src/Form/UserType.php line 103

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Rank;
  4. use App\Entity\Respondent;
  5. use App\Entity\User;
  6. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  10. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\OptionsResolver\OptionsResolver;
  14. class UserType extends AbstractType
  15. {
  16.     public function buildForm(FormBuilderInterface $builder, array $options): void
  17.     {
  18.         $respondent $options['respondent'];
  19.         $rank null;
  20.         if ($respondent) {
  21.             $rank $respondent->getRank();
  22.         }
  23.         $builder
  24.             ->add('email'EmailType::class, [
  25.                 'label' => 'Quelle est votre adresse email ?',
  26.                 'required' => true,
  27.             ])
  28.             ->add('firstName'TextType::class, [
  29.                 'label' => 'Quel est votre prénom ?',
  30.                 'required' => true,
  31.             ])
  32.             ->add('lastName'TextType::class, [
  33.                 'label' => 'Quel est votre nom ?',
  34.                 'required' => true,
  35.             ])
  36.             ->add('poste'TextType::class, [
  37.                 'label' => 'Quel est votre poste ?',
  38.                 'required' => true,
  39.             ])
  40.             ->add('age'ChoiceType::class, [
  41.                 'label' => "Quelle est votre tranche d'âge ?",
  42.                 'choices' => [
  43.                     'Moins de 25 ans' => User::AGE_25,
  44.                     'Entre 25 et 35 ans' => User::AGE_25_35,
  45.                     'Entre 35 et 45 ans' => User::AGE_35_45,
  46.                     'Entre 45 et 55 ans' => User::AGE_45_55,
  47.                     'Plus de 55 ans' => User::AGE_55,
  48.                 ],
  49.                 'required' => false,
  50.             ])
  51.             ->add('level'ChoiceType::class, [
  52.                 'label' => "Quel est votre niveau d'étude ?",
  53.                 'choices' => [
  54.                     'BAC (ou inférieur)' => User::LEVEL_BAC,
  55.                     'BAC+2' => User::LEVEL_BAC2,
  56.                     'BAC+3' => User::LEVEL_BAC3,
  57.                     'BAC+4' => User::LEVEL_BAC4,
  58.                     'BAC+5 (ou supérieur)' => User::LEVEL_BAC5,
  59.                 ],
  60.                 'required' => false,
  61.             ])
  62.             ->add('diplome'TextType::class, [
  63.                 'label' => 'Quel est votre diplôme ?',
  64.                 'help' => 'Votre diplôme le plus élevé.',
  65.                 'required' => false,
  66.             ])
  67.             ->add('initialTrained'ChoiceType::class, [
  68.                 'label' => "Dans le cadre de votre formation initiale avez-vous suivi des formations management ?",
  69.                 'choices' => [
  70.                     'Non' => false,
  71.                     'Oui' => true
  72.                 ],
  73.                 'required' => true,
  74.                 'expanded' => true,
  75.                 'multiple' => false,
  76. //                'empty_data' => 0
  77.             ])
  78.             ->add('alreadyTrained'ChoiceType::class, [
  79.                 'label' => "Avez-vous déjà suivi une formation en management au cours de votre parcours professionnel ?",
  80.                 'help' => 'CNFPT/ autres organismes ...',
  81.                 'choices' => [
  82.                     'Non' => false,
  83.                     'Oui' => true
  84.                 ],
  85.                 'required' => true,
  86.                 'expanded' => true,
  87.                 'multiple' => false,
  88. //                'empty_data' => 0
  89.             ])
  90.             ->add('rank'EntityType::class, [
  91.                 'label' => 'Quel est votre niveau de management ?',
  92.                 'class' => Rank::class,
  93.                 'required' => true,
  94.                 'expanded' => false,
  95.                 'multiple' => false,
  96.                 'mapped' => false,
  97.                 'data' => $rank,
  98.                 'choice_label' => 'name',
  99. //                todo : enlever cette condition 'choice_attr' quand il ya aura les 3 questionnaires
  100.                 'choice_attr' => function($choice$key$value) {
  101.                     $disabledIds = [23];
  102.                     // Vérifier si l'option est dans la liste des désactivées
  103.                     if (in_array($choice->getId(), $disabledIds)) {
  104.                         return ['disabled' => 'disabled']; // Ajouter l'attribut disabled pour ces options
  105.                     }
  106.                     return []; // Si l'option n'est pas désactivée, on retourne un tableau vide
  107.                 },
  108.             ])
  109.             ->add('experience'IntegerType::class, [
  110.                 'label' => 'Quel est votre experience dans la famille managériale sélectionnée ?',
  111.                 'required' => false,
  112.                 'help' => "En nombre d'année",
  113.                 'empty_data' => 0
  114.             ])
  115.             ->add('nbManaged'ChoiceType::class, [
  116.                 'label' => "Combien de personnes managez-vous ?",
  117.                 'choices' => [
  118.                     'Moins de 10 personnes' => User::NB_MANAGED_10,
  119.                     'Entre 10 et 20 personnes' => User::NB_MANAGED_10_20,
  120.                     'Entre 20 et 30 personnes' => User::NB_MANAGED_20_30,
  121.                     'Plus de 30 personnes' => User::NB_MANAGED_30,
  122.                 ],
  123.                 'required' => false,
  124.             ])
  125.         ;
  126.     }
  127.     public function configureOptions(OptionsResolver $resolver): void
  128.     {
  129.         $resolver->setDefaults([
  130.             'data_class' => User::class,
  131.             'respondent' => null
  132.         ]);
  133.     }
  134. }