src/Form/UploadType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  5. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  6. use Symfony\Component\Form\Extension\Core\Type\FileType;
  7. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\Form\FormError;
  11. use Symfony\Component\Form\FormEvent;
  12. use Symfony\Component\Form\FormEvents;
  13. use Symfony\Component\Validator\Constraints\File;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class UploadType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options): void
  18.     {
  19.         $builder
  20.             ->add('password'TextType::class, [
  21.                 'attr' => ['class' => 'form-control''id' => 'pass'],
  22.                 'mapped' => false,
  23.                 'required' => true
  24.             ])
  25.             ->add('generateBtn'ButtonType::class, [
  26.                 'attr' => ['class' => 'btn btn-outline-success''onclick' => 'genPass();'],
  27.                 'label' => 'Password'
  28.             ])
  29.             ->add('upload'FileType::class, [
  30.                 'label' => 'Fichier Csv',
  31.                 'attr' => ['class' => 'form-control'],
  32.                 'mapped' => false,
  33.                 'constraints' => [
  34.                     new File([
  35.                         'maxSize' => '1024k',
  36.                         'mimeTypes' => [
  37.                             'text/csv',
  38.                             'text/plain'
  39.                         ],
  40.                         'mimeTypesMessage' => 'Please upload a valid CSV document',
  41.                     ])
  42.                 ],
  43.             ])
  44.             ->add('template'ChoiceType::class, [
  45.                 'mapped' => false,
  46.                 'required' => true,
  47.                 'attr' => ['class' => 'form-control'],
  48.                 'choices'  => [
  49.                     'ToneoFirst' => 'toneofirst',
  50.                     'Webopass' => 'webopass',
  51.                     'Starpass' => 'starpass',
  52.                 ],
  53.             ])
  54.             ->add('submit'SubmitType::class, [
  55.                 'attr' => ['class' => 'btn btn-outline-success']
  56.             ])
  57.         ;
  58.         $builder->get('upload')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
  59.             $form $event->getForm();
  60.             $data $event->getData();
  61.             if ($data->getClientOriginalExtension() !== 'csv') {
  62.                 $form->addError(new FormError('Please upload a valid CSV document'));
  63.             }
  64.         });
  65.     }
  66.     public function configureOptions(OptionsResolver $resolver): void
  67.     {
  68.         $resolver->setDefaults([
  69.             // Configure your form options here
  70.         ]);
  71.     }
  72. }