<?php
// src/Doxa/DataBundle/Form/UserType.php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Doctrine\ORM\EntityRepository;
use App\Entity\User;
use App\Entity\Country;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$isDoxado = $options['is_doxado'];
$builder
->add('email', EmailType::class, ['label' => 'signup_doxado.email', 'attr' => ['maxlength' => 100, 'placeholder' => $isDoxado ? 'signup_doxado.email_hint' : 'Ingresa tu dirección de e-mail' ] , ])
->add('firstName', TextType::class, ['label' => 'signup_doxado.first_name', 'attr' => ['maxlength' => 100, 'placeholder' => 'signup_doxado.first_name_hint' ] ,])
->add('lastName', TextType::class, ['label' => 'signup_doxado.last_name', 'attr' => ['maxlength' => 100, 'placeholder' => 'signup_doxado.last_name_hint' ] ,])
->add('plainPassword', PasswordType::class, ['label' => 'signup_doxado.password', 'attr' => [ 'maxlength' => 100, 'placeholder' => 'signup_doxado.password_hint' ] ,])
->add('plainPassword2', PasswordType::class, ['label' => 'signup_doxado.password', 'attr' => [ 'maxlength' => 100, 'placeholder' => 'signup_doxado.password_hint' ] ,])
->add('phoneNumberAreaCode', EntityType::class, [ 'class' => Country::class, 'choice_label' => function($el){
return ("+" . $el->getPhoneCode());
}, 'label' => 'signup_doxado.area_code', 'placeholder' => '', 'attr' => [], 'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('c')
->andWhere('c.phoneCode IS NOT NULL')
->orderBy('c.phoneCode', 'ASC');
// ->groupBy('c.phoneCode');
}, 'choice_attr' => function($val, $key, $index){
return ['data-country' => strtolower($val->getCountryCode())];
} ], )
->add('phoneNumber', TextType::class, ['label' => 'signup_doxado.phone_number', 'attr' => ['maxlength' => 10, 'placeholder' => 'signup_doxado.phone_number_hint' ] ,])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => User::class,
'is_doxado' => false,
));
}
}