src/Form/UserFormType.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\User;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Vich\UploaderBundle\Form\Type\VichImageType;
  7. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. use Symfony\Component\Validator\Constraints as Assert;
  10. use Symfony\Component\Form\Extension\Core\Type\DateType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  13. use Symfony\Component\Form\Extension\Core\Type\CountryType;
  14. use Symfony\Component\Security\Core\Security;
  15. class UserFormType extends AbstractType
  16. {
  17. private $security;
  18. public function __construct(Security $security)
  19. {
  20. $this->security = $security;
  21. }
  22. public function buildForm(FormBuilderInterface $builder, array $options): void
  23. {
  24. $user = $this->security->getUser();
  25. $builder
  26. ->add('phoneNumber')
  27. ->add('fullName', TextType::class, [
  28. 'label' => 'Nom complet',
  29. 'required' => true,
  30. 'constraints' => new Assert\NotBlank(),
  31. 'trim' => true])
  32. ->add('birthday', DateType::class, [
  33. 'label' => 'Date de naissance',
  34. 'html5' => true,
  35. 'widget' => 'single_text',
  36. 'constraints' => new Assert\Date(),
  37. 'required' => true,
  38. 'constraints' => new Assert\NotBlank(),
  39. 'trim' => true])
  40. ->add('gender', ChoiceType::class, array(
  41. 'constraints' => new Assert\NotBlank(),
  42. 'choices' => array(
  43. 'FEMME' => 1,
  44. 'HOMME' => 0,
  45. ), 'label' => 'Sexe'))
  46. ->add('birthplace')
  47. ->add('phoneNumber', TextType::class, [
  48. 'label' => 'Téléphone',
  49. 'required' => false,
  50. 'trim' => true])
  51. ->add('nationality', CountryType::class, [
  52. 'label' => 'Nationalité',
  53. 'required' => true,
  54. 'constraints' => new Assert\NotBlank(),
  55. 'trim' => true])
  56. ->add('location', TextType::class, [
  57. 'label' => 'Résidence',
  58. 'required' => true,
  59. 'constraints' => new Assert\NotBlank(),
  60. 'trim' => true])
  61. ->add('academicLevel', ChoiceType::class, array(
  62. 'constraints' => new Assert\NotBlank(),
  63. 'choices' => array(
  64. 'BAC' => 'BACCALAUREAT',
  65. 'LICENCE' => 'LICENCE',
  66. 'MASTER' => 'MASTER',
  67. 'IET' => 'IET',
  68. 'DOCTORAT' => 'DOCTORAT',
  69. ), 'label' => 'Niveau académique'))
  70. ->add('numCni', TextType::class, [
  71. 'label' => 'Numéro de CNI',
  72. 'required' => true,
  73. 'constraints' => new Assert\NotBlank(),
  74. 'trim' => true])
  75. ->add('region', ChoiceType::class, array(
  76. 'constraints' => new Assert\NotBlank(),
  77. 'choices' => array(
  78. 'Adamaoua' => 'Adamaoua',
  79. 'Centre' => 'Centre',
  80. 'Est' => 'Est',
  81. 'Extrême-Nord' => 'Extrême-Nord',
  82. 'Littoral' => 'Littoral',
  83. 'Nord' => 'Nord',
  84. 'Nord-Ouest' => 'Nord-Ouest',
  85. 'Ouest' => 'Ouest',
  86. 'Sud' => 'Sud',
  87. 'Sud-Ouest' => 'Sud-Ouest',
  88. ), 'label' => 'Region d\'origine'))
  89. ->add('department', TextType::class, [
  90. 'label' => 'Departement d\'origine',
  91. 'required' => true,
  92. 'constraints' => new Assert\NotBlank(),
  93. 'trim' => true])
  94. ->add('domain')
  95. ->add('securityQuestion', ChoiceType::class, array(
  96. 'constraints' => new Assert\NotBlank(),
  97. 'choices' => array(
  98. 'Numero de CNI?' => 'cin_number',
  99. 'Quelle est la ville de naissance de maman?'=> 'mother_birthplace',
  100. 'Le metier dont tu reves d\'exercer depuis ton enfance?'=> 'favorite_job' ,
  101. 'Quel est ton quartier de residence?' =>'residence' ,
  102. ), 'label' => 'Question de securite'))
  103. ->add('securityAnswer', TextType::class, [
  104. 'label' => 'Réponse à la question de sécurité',
  105. 'required' => true,
  106. ]);
  107. if ($this->security->isGranted('ROLE_ADMIN')) {
  108. $builder
  109. ->add('email')
  110. ->add('status', ChoiceType::class, array(
  111. 'constraints' => new Assert\NotBlank(),
  112. 'choices' => array(
  113. 'ADMINISTRATEUR' => 'ADMIN',
  114. 'ELEVE' => 'ELEVE',
  115. 'ENSEIGNANT' => 'PROF',
  116. 'FINANCE' => 'FINANCE',
  117. 'PREFET d\'ETUDES' => 'PREFET',
  118. 'PRINCIPAL' => 'PRINCIPAL',
  119. ), 'label' => 'Fonction'));
  120. }
  121. ;
  122. }
  123. public function configureOptions(OptionsResolver $resolver): void
  124. {
  125. $resolver->setDefaults([
  126. 'data_class' => User::class,
  127. ]);
  128. }
  129. }