src/Form/UserType.php line 17

Open in your IDE?
  1. <?php
  2. // src/Form/UserType.php
  3. namespace App\Form;
  4. use App\Entity\User;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\OptionsResolver\OptionsResolver;
  8. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  9. use Symfony\Component\Form\Extension\Core\Type\TextType;
  10. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  11. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  12. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  13. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  14. class UserType extends AbstractType
  15. {
  16.     public function buildForm(FormBuilderInterface $builder, array $options)
  17.     {
  18.         $userId $options['data']->getId();
  19.         $dateDeNaissance $options['data']->getDateDeNaissance();
  20.         $phone $options['data']->getPhone();
  21.         $methodForSignEmail $options['data']->isMethodForSignEmail();
  22.         $registrationForm false;
  23.         $prefixs = [
  24.                 '+7' => "+7",
  25.                 '+12' => "+12",
  26.                 '+20' => "+20",
  27.                 '+27' => "+27",
  28.                 '+30' => "+30",
  29.                 '+31' => "+31",
  30.                 '+32' => "+32",
  31.                 '+33' => "+33",
  32.                 '+34' => "+34",
  33.                 '+36' => "+36",
  34.                 '+39' => "+39",
  35.                 '+40' => "+40",
  36.                 '+41' => "+41",
  37.                 '+43' => "+43",
  38.                 '+44' => "+44",
  39.                 '+45' => "+45",
  40.                 '+46' => "+46",
  41.                 '+47' => "+47",
  42.                 '+48' => "+48",
  43.                 '+49' => "+49",
  44.                 '+51' => "+51",
  45.                 '+52' => "+52",
  46.                 '+53' => "+53",
  47.                 '+54' => "+54",
  48.                 '+55' => "+55",
  49.                 '+56' => "+56",
  50.                 '+57' => "+57",
  51.                 '+58' => "+58",
  52.                 '+60' => "+60",
  53.                 '+61' => "+61",
  54.                 '+62' => "+62",
  55.                 '+63' => "+63",
  56.                 '+64' => "+64",
  57.                 '+65' => "+65",
  58.                 '+66' => "+66",
  59.                 '+81' => "+81",
  60.                 '+82' => "+82",
  61.                 '+83' => "+83",
  62.                 '+84' => "+84",
  63.                 '+86' => "+86",
  64.                 '+90' => "+90",
  65.                 '+91' => "+91",
  66.                 '+92' => "+92",
  67.                 '+93' => "+93",
  68.                 '+94' => "+94",
  69.                 '+95' => "+95",
  70.                 '+98' => "+98",
  71.                 '+211' => "+211",
  72.                 '+212' => "+212",
  73.                 '+213' => "+213",
  74.                 '+216' => "+216",
  75.                 '+218' => "+218",
  76.                 '+220' => "+220",
  77.                 '+221' => "+221",
  78.                 '+222' => "+222",
  79.                 '+223' => "+223",
  80.                 '+224' => "+224",
  81.                 '+225' => "+225",
  82.                 '+226' => "+226",
  83.                 '+227' => "+227",
  84.                 '+228' => "+228",
  85.                 '+229' => "+229",
  86.                 '+230' => "+230",
  87.                 '+231' => "+232",
  88.                 '+232' => "+233",
  89.                 '+233' => "+234",
  90.                 '+235' => "+235",
  91.                 '+236' => "+236",
  92.                 '+237' => "+237",
  93.                 '+238' => "+238",
  94.                 '+239' => "+239",
  95.                 '+240' => "+240",
  96.                 '+241' => "+241",
  97.                 '+242' => "+242",
  98.                 '+243' => "+243",
  99.                 '+244' => "+244",
  100.                 '+245' => "+245",
  101.                 '+246' => "+246",
  102.                 '+247' => "+247",
  103.                 '+248' => "+248",
  104.                 '+249' => "+249",
  105.                 '+250' => "+250",
  106.                 '+251' => "+251",
  107.                 '+252' => "+252",
  108.                 '+253' => "+253",
  109.                 '+254' => "+254",
  110.                 '+255' => "+255",
  111.                 '+256' => "+256",
  112.                 '+257' => "+257",
  113.                 '+258' => "+258",
  114.                 '+260' => "+260",
  115.                 '+261' => "+261",
  116.                 '+262' => "+262",
  117.                 '+263' => "+263",
  118.                 '+264' => "+264",
  119.                 '+265' => "+265",
  120.                 '+266' => "+266",
  121.                 '+267' => "+267",
  122.                 '+268' => "+268",
  123.                 '+269' => "+269",
  124.                 '+290' => "+290",
  125.                 '+291' => "+291",
  126.                 '+297' => "+297",
  127.                 '+298' => "+298",
  128.                 '+299' => "+299",
  129.                 '+350' => "+350",
  130.                 '+351' => "+351",
  131.                 '+352' => "+352",
  132.                 '+353' => "+353",
  133.                 '+354' => "+354",
  134.                 '+355' => "+355",
  135.                 '+356' => "+356",
  136.                 '+357' => "+357",
  137.                 '+358' => "+358",
  138.                 '+359' => "+359",
  139.                 '+370' => "+370",
  140.                 '+371' => "+371",
  141.                 '+372' => "+372",
  142.                 '+373' => "+373",
  143.                 '+374' => "+374",
  144.                 '+375' => "+375",
  145.                 '+376' => "+376",
  146.                 '+377' => "+377",
  147.                 '+378' => "+378",
  148.                 '+380' => "+380",
  149.                 '+381' => "+381",
  150.                 '+382' => "+382",
  151.                 '+383' => "+383",
  152.                 '+385' => "+385",
  153.                 '+386' => "+386",
  154.                 '+387' => "+387",
  155.                 '+389' => "+389",
  156.                 '+420' => "+420",
  157.                 '+421' => "+421",
  158.                 '+422' => "+422",
  159.                 '+423' => "+423",
  160.                 '+500' => "+500",
  161.                 '+501' => "+501",
  162.                 '+502' => "+502",
  163.                 '+503' => "+503",
  164.                 '+504' => "+504",
  165.                 '+505' => "+505",
  166.                 '+506' => "+506",
  167.                 '+507' => "+507",
  168.                 '+508' => "+508",
  169.                 '+509' => "+509",
  170.                 '+590' => "+590",
  171.                 '+591' => "+591",
  172.                 '+592' => "+592",
  173.                 '+593' => "+593",
  174.                 '+594' => "+594",
  175.                 '+595' => "+595",
  176.                 '+596' => "+596",
  177.                 '+597' => "+597",
  178.                 '+598' => "+598",
  179.                 '+599' => "+599",
  180.                 '+670' => "+670",
  181.                 '+672' => "+672",
  182.                 '+673' => "+673",
  183.                 '+674' => "+674",
  184.                 '+675' => "+675",
  185.                 '+676' => "+676",
  186.                 '+677' => "+677",
  187.                 '+678' => "+678",
  188.                 '+679' => "+679",
  189.                 '+680' => "+680",
  190.                 '+681' => "+681",
  191.                 '+682' => "+682",
  192.                 '+683' => "+683",
  193.                 '+685' => "+685",
  194.                 '+686' => "+686",
  195.                 '+687' => "+687",
  196.                 '+688' => "+688",
  197.                 '+689' => "+689",
  198.                 '+690' => "+690",
  199.                 '+691' => "+691",
  200.                 '+692' => "+692",
  201.                 '+850' => "+850",
  202.                 '+852' => "+852",
  203.                 '+853' => "+853",
  204.                 '+855' => "+855",
  205.                 '+856' => "+856",
  206.                 '+880' => "+880",
  207.                 '+881' => "+881",
  208.                 '+882' => "+882",
  209.                 '+886' => "+886",
  210.                 '+960' => "+960",
  211.                 '+961' => "+961",
  212.                 '+962' => "+962",
  213.                 '+963' => "+963",
  214.                 '+964' => "+964",
  215.                 '+965' => "+965",
  216.                 '+966' => "+966",
  217.                 '+967' => "+967",
  218.                 '+968' => "+968",
  219.                 '+970' => "+970",
  220.                 '+971' => "+971",
  221.                 '+972' => "+972",
  222.                 '+973' => "+973",
  223.                 '+974' => "+974",
  224.                 '+975' => "+975",
  225.                 '+976' => "+976",
  226.                 '+977' => "+977",
  227.                 '+992' => "+992",
  228.                 '+993' => "+993",
  229.                 '+994' => "+994",
  230.                 '+995' => "+995",
  231.                 '+996' => "+996",
  232.                 '+998' => "+998"
  233.             ]; 
  234.         $builder->add('email'EmailType::class, array(
  235.             'label' => 'Email*',
  236.             'attr' => array(
  237.                 'placeholder' => 'j.dupont@mail.com'
  238.             )
  239.         ));
  240.         $builder->add('firstName'TextType::class, array(
  241.             'label' => 'Prénom*',
  242.             'attr' => array(
  243.                 'placeholder' => 'Jean',
  244.                 //'pattern' => "^[_A-z0-9 ']{1,}$"
  245.             )
  246.         ));
  247.         $builder->add('sex'ChoiceType::class, array(
  248.             'label' => 'État civil*',
  249.             'choices'  => [
  250.                 'M' => 0,
  251.                 'Mme' => 1,
  252.             ],
  253.             'attr' => array(
  254.                 "class" => "select-2"
  255.             ),
  256.             'placeholder' => false,
  257.             'required' => true
  258.         ));
  259.         $builder->add('lastName'TextType::class, array(
  260.             'label' => 'Nom*',
  261.             'attr' => array(
  262.                 'placeholder' => 'DUPONT'
  263.             )
  264.         ));
  265.         if($phone){
  266.             $builder->add('phone'TextType::class, array(
  267.                 'label' => 'Numéro de téléphone*',
  268.                 'attr' => array(
  269.                     "placeholder" => '0607080910',
  270.                     "data-tooltip" => "Ce numéro de téléphone est utilisé pour remplir automatiquement les documents et pour la signature électronique",
  271.                 )
  272.             ));
  273.             $builder->add('phonePrefix'ChoiceType::class, array(
  274.                 'label' => '',
  275.                 'attr' => array(
  276.                     "data-tooltip" => "",
  277.                     "class" => "select-2",
  278.                 ),
  279.                 'choices'  => $prefixs,
  280.                 'required' => true,
  281.                 "placeholder" => false,
  282.             ));
  283.         }
  284.         else{
  285.             $builder->add('phone'TextType::class, array(
  286.                 'label' => 'Numéro de téléphone*',
  287.                 'attr' => array(
  288.                     "placeholder" => '0607080910',
  289.                     "class" => 'phone-control',
  290.                     "data-tooltip" => "Ce numéro de téléphone est utilisé pour remplir automatiquement les documents et pour la signature électronique",
  291.                 ),
  292.                 'data' => ''
  293.             ));
  294.             $builder->add('phonePrefix'ChoiceType::class, array(
  295.                 'label' => '',
  296.                 'attr' => array(
  297.                     "data-tooltip" => "",
  298.                     "class" => "select-2",
  299.                 ),
  300.                 'choices'  => $prefixs,
  301.                 'required' => true,
  302.                 "placeholder" => false,
  303.                 'data' => "+33"
  304.             ));
  305.         }
  306.         if($userId != "new-customer"){
  307.             if($dateDeNaissance != null && $dateDeNaissance != ""){
  308.                 $builder->add('dateDeNaissance'TextType::class, array(
  309.                     'label' => 'Date de naissance*',
  310.                     'attr' => array(
  311.                         "data-tooltip" => "Date de naissance",
  312.                         'placeholder' => 'jj/mm/aaaa'
  313.                     ), 
  314.                     'data' => $dateDeNaissance->format("d/m/Y"),
  315.                     'required' => true
  316.                 ));
  317.             }
  318.             else{
  319.                 $builder->add('dateDeNaissance'TextType::class, array(
  320.                     'label' => 'Date de naissance*',
  321.                     'attr' => array(
  322.                         "data-tooltip" => "Date de naissance",
  323.                         'placeholder' => 'jj/mm/aaaa'
  324.                     ), 
  325.                     'required' => true
  326.                 ));
  327.             }
  328.         }
  329.         if($userId != "new-customer"){
  330.             $builder->add('numeroDeVoie'TextType::class, array(
  331.                 'label' => 'Adresse (fiscale)*',
  332.                 'attr' => array(
  333.                     'placeholder' => '112 Chemin de la République',
  334.                     'class' => "search_api"
  335.                 ),
  336.                 'required' => true
  337.             ));
  338.             $builder->add('codePostal'TextType::class, array(
  339.                 'label' => 'Code postal*',
  340.                 'attr' => array(
  341.                     'placeholder' => '69000',
  342.                     'class' => "code_postal_api"
  343.                 ),
  344.                 'required' => true
  345.             ));
  346.             $builder->add('ville'TextType::class, array(
  347.                 'label' => 'Ville*',
  348.                 'attr' => array(
  349.                     'placeholder' => 'Lyon',
  350.                     'class' => "ville_api"
  351.                 ),
  352.                 'required' => true
  353.             ));
  354.             $builder->add('pays'TextType::class, array(
  355.                 'label' => 'Pays*',
  356.                 'attr' => array(
  357.                     'placeholder' => 'France',
  358.                     'class' => "pays_api"
  359.                 ),
  360.                 'required' => true
  361.             ));
  362.             $builder->add('numeroDeVoie'TextType::class, array(
  363.                 'label' => 'Adresse (fiscale)*',
  364.                 'attr' => array(
  365.                     'placeholder' => '112 Chemin de la République',
  366.                     'class' => "search_api"
  367.                 ),
  368.                 'required' => true
  369.             ));
  370.             if($methodForSignEmail !== null){
  371.                 $builder->add('methodForSignEmail'ChoiceType::class, array(
  372.                     'label' => 'Méthode de réception du code pour la signature électronique',
  373.                     'label_attr' => array(
  374.                         "class" => ""
  375.                     ),
  376.                     'attr' => array(
  377.                         "data-tooltip" => ""
  378.                     ), 
  379.                     'choices'  => [
  380.                         'Par SMS' => 0,
  381.                         'Par email' => 1,
  382.                     ],
  383.                     'expanded' => true,
  384.                     'placeholder' => false,
  385.                     'required' => true
  386.                 ));
  387.             }
  388.             else{
  389.                 $builder->add('methodForSignEmail'ChoiceType::class, array(
  390.                     'label' => 'Méthode de réception du code pour la signature électronique',
  391.                     'label_attr' => array(
  392.                         "class" => ""
  393.                     ),
  394.                     'attr' => array(
  395.                         "data-tooltip" => ""
  396.                     ), 
  397.                     'choices'  => [
  398.                         'Par SMS' => 0,
  399.                         'Par email' => 1,
  400.                     ],
  401.                     'data' => 0,
  402.                     'expanded' => true,
  403.                     'placeholder' => false,
  404.                     'required' => true
  405.                 ));
  406.             }
  407.             $builder->add('acceptRecevoirDocumentGarantieEmail'ChoiceType::class, array(
  408.                 'label' => 'J’accepte de recevoir les documents et informations relatifs à la gestion de ma garantie par courrier électronique.',
  409.                 'label_attr' => array(
  410.                     "class" => ""
  411.                 ),
  412.                 'attr' => array(
  413.                     "data-tooltip" => ""
  414.                 ), 
  415.                 'choices'  => [
  416.                     'Oui' => 0,
  417.                     'Non' => 1,
  418.                 ],
  419.                 'expanded' => true,
  420.                 'placeholder' => false,
  421.                 'required' => true
  422.             ));
  423.             $builder->add('acceptPropositionCommercialEmail'ChoiceType::class, array(
  424.                 'label' => 'Souhaitez-vous recevoir des propositions commerciales de la part de MER par <b>courrier électronique</b> ?',
  425.                 'label_attr' => array(
  426.                     "class" => "small"
  427.                 ),
  428.                 'attr' => array(
  429.                     "data-tooltip" => ""
  430.                 ), 
  431.                 'choices'  => [
  432.                     'Oui' => 0,
  433.                     'Non' => 1,
  434.                 ],
  435.                 'expanded' => true,
  436.                 'placeholder' => false,
  437.                 'required' => true
  438.             ));
  439.             $builder->add('acceptPropositionCommercialTelephone'ChoiceType::class, array(
  440.                 'label' => 'Souhaitez-vous recevoir des propositions commerciales de la part de MER par <b>téléphone</b> ?',
  441.                 'label_attr' => array(
  442.                     "class" => "small"
  443.                 ),
  444.                 'attr' => array(
  445.                     "data-tooltip" => ""
  446.                 ), 
  447.                 'choices'  => [
  448.                     'Oui' => 0,
  449.                     'Non' => 1,
  450.                 ],
  451.                 'expanded' => true,
  452.                 'placeholder' => false,
  453.                 'required' => true
  454.             ));
  455.         }
  456.         $builder->add('adherentDistributeur'TextType::class, array(
  457.             'label' => "Numéro d’adhérent distributeur*",
  458.             'attr' => array(
  459.                 "data-tooltip" => "Numéro AGPM/GMPA/TEGO. Si non concerné, saisir 0",
  460.                 "class" => "",
  461.             ), 
  462.             'required' => true
  463.         ));
  464.         if($registrationForm){
  465.             $builder->add('plainPassword'RepeatedType::class, array(
  466.                 'type' => PasswordType::class,
  467.                 'first_options'  => array('label' => 'Mot de passe :'),
  468.                 'second_options' => array('label' => 'Mot de passe de confirmation :'),
  469.             ));
  470.         }
  471.         $builder->add('save'SubmitType::class, array(
  472.             'label' => 'Enregistrer',
  473.             'attr' => array('class' => 'button blue')
  474.         ));
  475.     }
  476.     public function configureOptions(OptionsResolver $resolver)
  477.     {
  478.         $resolver->setDefaults(array(
  479.             'data_class' => User::class,
  480.         ));
  481.     }
  482. }