<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Validator\Constraints\File;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UploadType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('password', TextType::class, [
'attr' => ['class' => 'form-control', 'id' => 'pass'],
'mapped' => false,
'required' => true
])
->add('generateBtn', ButtonType::class, [
'attr' => ['class' => 'btn btn-outline-success', 'onclick' => 'genPass();'],
'label' => 'Password'
])
->add('upload', FileType::class, [
'label' => 'Fichier Csv',
'attr' => ['class' => 'form-control'],
'mapped' => false,
'constraints' => [
new File([
'maxSize' => '1024k',
'mimeTypes' => [
'text/csv',
'text/plain'
],
'mimeTypesMessage' => 'Please upload a valid CSV document',
])
],
])
->add('template', ChoiceType::class, [
'mapped' => false,
'required' => true,
'attr' => ['class' => 'form-control'],
'choices' => [
'ToneoFirst' => 'toneofirst',
'Webopass' => 'webopass',
'Starpass' => 'starpass',
],
])
->add('submit', SubmitType::class, [
'attr' => ['class' => 'btn btn-outline-success']
])
;
$builder->get('upload')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
if ($data->getClientOriginalExtension() !== 'csv') {
$form->addError(new FormError('Please upload a valid CSV document'));
}
});
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
// Configure your form options here
]);
}
}