<?php
namespace App\Form\Type\Security;
use App\Entity\Country;
use App\Entity\UserGroup;
use App\Form\Model\Security\RegisterModel;
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\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class RegisterType extends AbstractType
{
const DOMAIN_COUNTRIES = 'countries';
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstname', null, [
'required' => true,
'label' => 'register.firstname.label',
])
->add('lastname', null, [
'required' => true,
'label' => 'register.lastname.label',
])
->add('email', EmailType::class, [
'required' => true,
'label' => 'register.address.label',
'attr' => [
'placeholder' => 'register.address.placeholder',
],
])
->add('emailConfirm', EmailType::class, [
'required' => false,
'attr' => [
'placeholder' => 'register.emailConfirm.placeholder',
],
])
->add('country', EntityType::class, [
'required' => true,
'class' => Country::class,
'label' => 'register.country.label',
'choice_label' => 'name',
'choice_value' => 'code',
'choice_translation_domain' => self::DOMAIN_COUNTRIES,
])
->add('password', PasswordType::class, [
'required' => true,
'label' => 'register.password.label',
'attr' => [
'placeholder' => 'register.password.placeholder',
],
])
->add('passwordRepeat', PasswordType::class, [
'required' => true,
'label' => 'register.passwordRepeat.label',
'attr' => [
'placeholder' => 'register.passwordRepeat.placeholder',
],
])
->add('policy', CheckboxType::class, [
'required' => true,
'label' => 'register.policy.label',
'translation_domain' => false,
])
->add('role', ChoiceType::class, [
'label' => false,
'required' => true,
'expanded' => true,
'multiple' => false,
'choices' => [
'parent' => UserGroup::ROLE_USER,
'teacher' => UserGroup::ROLE_TEACHER,
],
'label_attr' => [
'class' => 'radio-inline radio-custom mx-3',
],
]);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => RegisterModel::class,
]);
}
}