<?php
namespace App\Form;
use App\Entity\User;
use App\Validator\MailCustom;
use App\Validator\Password;
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\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\IsTrue;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
class SocietyRegisterFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('lastname', TextType::class, [
'attr' => [
'class' => 'style-72',
'id' => 'lastname-register',
'maxlength' => 50,
],
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir votre nom de famille'
]),
]
])
->add('name', TextType::class, [
'attr' => [
'class' => 'style-61',
'maxlength' => 150,
],
'mapped' => false,
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir le nom commercial de l\'entreprise'
]),
]
])
->add('nb_mission', NumberType::class, [
'attr' => [
'class' => 'style-61',
'maxlength' => 150, // Note que maxlength n'a pas d'impact sur un champ de type number
],
'mapped' => false,
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez répondre combien de mission souhaitez vous poster'
]),
]
])
->add('post_intercontrat', TextType::class, [
'attr' => [
'class' => 'style-61',
'maxlength' => 250,
],
'mapped' => false,
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez répondre si vous souhaitez poster vos intercontrats'
]),
]
])
->add('typeSociete', ChoiceType::class, [
'required' => true,
'attr' => [
'class' => 'style-61',
'title' => 'Type de structure'
],
"placeholder" => "Type de structure",
'choices' => [
'ESN/SSII' => 'ESN/SSII',
'Cabinet de conseil' => 'Cabinet de conseil',
'Cabinet de recrutement ' => 'Cabinet de recrutement ',
'Start-up' => 'Start-up',
'Editeur de logiciel' => 'Editeur de logiciel',
'Sourcing' => 'Sourcing',
'Agence web' => 'Agence web',
'Client final/DSI ' => 'Client final/DSI ',
'Indépendant' => 'Indépendant',
'Société de portage' => 'Société de portage',
'Centre de formation' => 'Centre de formation',
],
'expanded' => false,
'mapped' => false,
'constraints' => [
new NotBlank([
'message' => 'Veuillez choisir le type de structure'
]),
]
])
->add('post_intercontrat', ChoiceType::class, [
'required' => true,
'attr' => [
'class' => 'style-61',
'title' => 'Type de structure'
],
"placeholder" => "Choisir",
'choices' => [
'Oui' => 'Oui',
'Non' => 'Non',
'Je n\'ai pas de consultant salarié' => 'Je n’ai pas de consultant salarié',
],
'expanded' => false,
'mapped' => false,
'constraints' => [
new NotBlank([
'message' => 'Veuillez choisir si vous souhaitez poster vous intercontrats'
]),
]
])
->add('phone', TextType::class, [
'attr' => [
'class' => 'style-77 only_phone_number',
],
"required" => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir le numéro de téléphone'
])
],
'mapped' => false,
])
->add('email', EmailType::class, [
'attr' => [
'class' => 'style-61',
'id' => 'emailaddress-register',
],
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir votre adresse email'
]),
new Email([
'message' => 'Veuillez saisir une adresse email valide'
])
]
])
->add('plainPassword', PasswordType::class, [
// instead of being set onto the object directly,
// this is read and encoded in the controller
'required' => true,
'mapped' => false,
// 'first_options' => [
// 'attr' => [
// 'autocomplete' => 'new-password',
// 'class' => 'style-61',
// 'id' => 'password-register',
// ]],
// 'second_options' => [
// 'attr' => [
// 'autocomplete' => 'new-password',
// 'class' => 'style-61',
// 'id' => 'password-repeat-registerr',
// ]],
// 'constraints' => [
// new Password()
// ],
// 'invalid_message' => ' Les mots de passes ne sont pas identiques'
])
->add('accepted',CheckboxType::class, [
'mapped' =>false,
'required' => false,
'constraints' => [
new IsTrue([
'message' =>'Vous devez accepter pour pouvoir vous inscrire'
]),
]
])
// ->add('newsletterAccept',CheckboxType::class, [
// 'mapped' =>false,
// 'required' => false,
// 'constraints' => [
// new IsTrue([
// 'message' =>'Vous devez accepter pour pouvoir vous inscrire'
// ]),
// ]
// ])
->add('civility', ChoiceType::class, [
'choices' => [
'Mr.' => 1,
'Mme' => 2,
],
"placeholder" => "Civilité",
'attr' => [
'class' => 'style-67',
],
'multiple' => false,
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir votre civilité'
]),
]
])
->add('firstname', TextType::class, [
'attr' => [
'class' => 'style-61',
'id' => 'firstname-register',
'maxlength' => 50,
],
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir votre prénom'
]),
]
])
->add('jobSociety', TextType::class, [
'attr' => [
'class' => 'style-61',
'maxlength' => 50,
],
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir l\'intitulé de votre poste dans l\'entreprise'
]),
]
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}