src/Form/GuestFormType.php line 24
<?phpdeclare(strict_types=1);namespace App\Form;use App\Entity\Guest;use App\Exception\InvalidDocumentNumberException;use App\Exception\InvalidFormatDocumentNumberException;use App\Exception\InvalidTypeDocumentException;use App\Service\ValidateNifNieService;use EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType;use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\Extension\Core\Type\CheckboxType;use Symfony\Component\Form\Extension\Core\Type\ChoiceType;use Symfony\Component\Form\Extension\Core\Type\EmailType;use Symfony\Component\Form\Extension\Core\Type\SubmitType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\Form\FormError;use Symfony\Component\Form\FormEvent;use Symfony\Component\Form\FormEvents;use Symfony\Component\OptionsResolver\OptionsResolver;class GuestFormType extends AbstractType{public function __construct(private readonly ValidateNifNieService $validateNifNieService,){}public function buildForm(FormBuilderInterface $builder, array $options): void{$builder->add('email', EmailType::class, ['label' => 'Correo electrónico*'])->add('email_confirm', EmailType::class, ['label' => 'Repetir correo electrónico*','mapped' => false])->add('name', null, ['label' => 'Nombre*','required' => true,])->add('surname', null, ['label' => 'Apellidos*','required' => true,])->add('document_type', ChoiceType::class, ['label' => 'Tipo de documento*','choices' => ['NIF' => 0,'NIE' => 2,],])->add('document_number', null, ['label' => 'Número de documento*',])->add('token')->add('privacy_policy_url')->add('version')->add('accepting_date')->add('aceptar', CheckboxType::class, ['mapped' => false,'required' => true,'label' => 'He leído y acepto la política de privacidad'])->add('Enviar', SubmitType::class, ['label' => 'Registrarse','attr' => ['class' => 'button']]);$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {$form = $event->getForm();/** @var Guest $data */$data = $event->getData();try {($this->validateNifNieService)($data->getDocumentNumber(), $data->getDocumentType());} catch (InvalidFormatDocumentNumberException|InvalidDocumentNumberException|InvalidTypeDocumentException $exception) {$form->get('document_number')->addError(new FormError($exception->getMessage()));}});}public function configureOptions(OptionsResolver $resolver): void{$resolver->setDefaults(['data_class' => Guest::class,]);}}