<?php
namespace App\Form;
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\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotBlank;
class AccountProRegistrationType extends AbstractType
{
private RouterInterface $router;
public function __construct(RouterInterface $router)
{
$this->router = $router;
}
/**
* Permet de générer des placeholders avec des prénoms aléatoires aussi bien masculin que féminin
*/
private array $placeholders = [
[
'email' => 'valentine@gmail.com',
'firstname' => 'Valentine',
'name' => 'Dupond',
],
[
'email' => 'charlie@gmail.com',
'firstname' => 'Charlie',
'name' => 'Dupond',
],
[
'email' => 'alice@gmail.com',
'firstname' => 'Alice',
'name' => 'Dupond',
]
];
public function buildForm(FormBuilderInterface $builder, array $options)
{
$placeholder = $this->getRandomPlaceholder();
$cguLink = $this->router->generate("cgu");
$builder
->add(
'rpps',
TextType::class,
[
'label' => 'Identifiant RPPS / ADELI',
'required' => true,
'attr' => [
'placeholder' => 'Ex : 010000000'
],
'constraints' => [
new NotBlank(['message' => "Le numéro RPPS est obligatoire"]),
],
]
)
->add(
'email',
EmailType::class,
[
'label' => 'Adresse email',
'required' => true,
'attr' => [
'placeholder' => 'Ex : ' . $placeholder['email'],
'pattern' => '[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$'
],
'constraints' => [
new NotBlank(['message' => "L'adresse email est obligatoire"]),
new Email()
],
]
)
->add(
'firstname',
TextType::class,
[
'label' => 'Prénom',
'required' => true,
'attr' => [
'placeholder' => 'Ex : ' . $placeholder['firstname']
],
'constraints' => [
new NotBlank(['message' => "Le prénom est obligatoire"]),
],
]
)
->add(
'lastname',
TextType::class,
[
'label' => 'Nom',
'required' => true,
'attr' => [
'placeholder' => 'Ex : ' . $placeholder['name']
],
'constraints' => [
new NotBlank(['message' => "Le nom est obligatoire"]),
],
]
)
->add(
'profession',
TextType::class,
[
'label' => 'Profession',
'required' => true,
'attr' => [
'placeholder' => 'Ex : kinésithérapeute, médecin, ...'
],
'constraints' => [
new NotBlank(['message' => "La profession est obligatoire"]),
],
]
)
->add(
'mobile',
TextType::class,
[
'label' => 'Numéro de mobile (facultatif)',
'required' => false,
'attr' => [
'placeholder' => 'Ex : 07.01.02.03.04'
],
]
)
->add(
'cgu',
CheckboxType::class,
[
'label' => "J'accepte les <a href=\"$cguLink\" target='_blank' class=\"a\">CGU</a>",
'label_html' => true,
'required' => true,
'constraints' => [
new NotBlank(['message' => "Vous devez accepter les CGU"]),
],
]
);
}
/**
* Retourne aléatoirement un utilisateur placeholder
*/
private function getRandomPlaceholder(): array
{
\shuffle($this->placeholders);
return \current($this->placeholders);
}
}