<?php
namespace App\Form\Publico\Registro;
use App\Entity\Ajustes\Direccion;
use App\Entity\Ajustes\Usuario;
use App\Form\Inc\AgreeTermsType;
use App\Form\Inc\IdiomasType;
use App\Form\Inc\RecaptchaType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use App\Form\Inc\RepeatedPasswordType;
use App\Form\Inc\SubmitFormType;
use App\Form\Privado\Entidades\Ajustes\DireccionType;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\OptionsResolver\OptionsResolver;
class RegistroUsuarioType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('password', RepeatedPasswordType::class, [
'label' => false,
'inherit_data' => true,
])
->add('name', null, [
'label' => 'security.register.form.name',
'required' => true,
])
->add('UsuDni', null, [
'label' => 'security.register.form.dni',
'required' => true,
])
->add('surname', null, [
'label' => 'security.register.form.surname',
'required' => true,
])
->add('company', null, [
'label' => 'security.register.form.company',
'required' => false,
])
->add('language', IdiomasType::class, [
'sub_label' => 'idiomas.titulo',
'placeholder' => 'selectores.simple',
'required' => true,
])
->add('email', null, [
'label' => 'security.register.form.email.label',
'help' => 'security.register.form.email.helper',
])
->add('phonePre', null, [
'label' => 'security.register.form.phoneprefix',
'required' => true,
])
->add('phone', null, [
'label' => 'security.register.form.phone',
'required' => true,
])
->add('direcciones', DireccionType::class)
->add('guardar', SubmitFormType::class, [
'sub_label' => 'security.register.form.submit',
'translation_domain' => 'security',
'sub_extra_class' => 'boto_guardar_cambios_entity btn btn-lg btn-primary w-100 mb-5',
])
->add('terms', AgreeTermsType::class, [
'label' => false,
'inherit_data' => true,
])
->add('captcha', RecaptchaType::class, [
'action_name_captcha' => 'registro_usuarios',
])
;
$builder->get('direcciones')
->addModelTransformer(new CallbackTransformer(
function ($direccionesArray) {
return count($direccionesArray) > 0 ? $direccionesArray[0] : new Direccion();
},
function ($direccionesArray) {
$collection = new ArrayCollection();
foreach ($direccionesArray as $dir) {
$collection->add($dir);
}
return $collection;
}
))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Usuario::class,
'translation_domain' => 'security',
]);
}
}