<?php
namespace App\Form\User;
use App\Entity\Organization;
use App\Entity\Statut;
use App\Entity\University;
use App\Entity\User;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Regex;
class AccountCreationFormType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'email',
EmailType::class,
[
'label' => 'form.label.email',
'required' => true,
]
)
->add(
'firstName',
TextType::class,
[
'label' => 'form.label.first_name',
'required' => true,
]
)
->add(
'lastName',
TextType::class,
[
'label' => 'form.label.last_name',
'required' => true,
]
)
->add(
'organization',
EntityType::class,
[
'label' => 'form.label.organization',
'class' => Organization::class,
'choice_label' => 'name',
'placeholder' => 'form.label.none',
'required' => false,
]
)
->add(
'password',
RepeatedType::class,
[
'type' => PasswordType::class,
'invalid_message' => 'the password fields must match',
'mapped' => false,
'first_options' => [
'label' => 'form.label.new_password',
'required' => true,
],
'second_options' => [
'label' => 'form.label.confirmation_password',
'required' => true,
],
'constraints' => [
new Regex('/(?=(.*[0-9]))(?=.*[a-z])(?=(.*[A-Z]))(?=(.*)).{8,}/', 'form.alert.password_rule'),
],
]
)
->add(
'statut',
EntityType::class,
[
'label' => 'form.label.statut',
'class' => Statut::class,
'choice_label' => 'name',
'required' => $options['statut_required'],
'disabled' => $options['statut_disabled'],
'placeholder' => 'form.label.none',
]
)
/* Uncomment when checkbox integration is done
->add(
'checkbox',
CheckboxType::class,
['mapped' => false,
'label' => 'form.action.accepted_cgu',
'required' => true]
) */
->add('submit', SubmitType::class, [
'label' => 'form.label.register',
]);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
'statut_disabled' => false,
'statut_required' => true,
]);
}
}