<?php
namespace App\Form\Payment;
use App\Entity\Account\User;
use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TelType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Validator\Constraints\NotBlank;
class FundingType extends AbstractType
{
public function __construct(
private Security $security
)
{
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$user = $this->security->getUser();
$builder
->add('paymentMeaning', TextType::class, [
'label' => 'funding.form.payment_meaning.label',
'required' => true,
'constraints' => new NotBlank(),
])
->add('status', TextType::class, [
'label' => 'funding.form.status.label',
'required' => true,
'constraints' => new NotBlank(),
])
->add('lastName', TextType::class, [
'label' => 'funding.form.last_name.label',
'data' => $user instanceof User ? $user->getLastname() : '',
'attr' => [
'readonly' => $user instanceof User
],
'required' => true,
'constraints' => new NotBlank(),
])
->add('firstName', TextType::class, [
'label' => 'funding.form.first_name.label',
'data' => $user instanceof User ? $user->getFirstName() : '',
'attr' => [
'readonly' => $user instanceof User
],
'required' => true,
'constraints' => new NotBlank(),
])
->add('mail', TextType::class, [
'label' => 'funding.form.mail.label',
'data' => $user instanceof User ? $user->getEmail() : '',
'attr' => [
'readonly' => $user instanceof User
],
'required' => true,
'constraints' => new NotBlank(),
])
->add('phone', TelType::class, [
'required' => true,
'label' => 'funding.form.phone.label',
])
->add('message', TextareaType::class, [
'label' => 'funding.form.message.label',
'required' => true,
'constraints' => new NotBlank(),
])
->add('captcha', Recaptcha3Type::class, [
'constraints' => new Recaptcha3([
'message' => 'karser_recaptcha3.message',
]),
'action_name' => 'registration',
'locale' => $options['locale'],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'locale' => 'fr',
]);
}
}