<?php
namespace App\Form;
use App\Entity\Brand;
use App\Request\ContactFormRequest;
use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotNull;
class ContactFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', null, [
'required' => true,
'attr' => [
'placeholder' => 'Your Name',
'data-rule' => 'minlen:4',
'data-msg' => 'Please enter at least 4 chars',
],
'constraints' => [
new NotNull(),
],
])
->add('brand', EntityType::class, [
'class' => Brand::class,
'choice_label' => 'name',
'required' => true,
'placeholder' => 'Select a Brand',
'attr' => [
'data-rule' => 'required',
'data-msg' => 'Please select a brand',
],
'constraints' => [
new NotNull(),
],
])
->add('email', EmailType::class, [
'required' => true,
'attr' => [
'placeholder' => 'Your Email',
'data-rule' => 'email',
'data-msg' => 'Please enter a valid email',
],
'constraints' => [
new NotNull(),
new Email(['message' => 'Please enter a valid email']),
],
])
->add('message', TextareaType::class, [
'required' => true,
'attr' => [
'placeholder' => 'Message',
'data-rule' => 'required',
'data-msg' => 'Please write something for us',
'rows' => 5,
'help' => 'Please provide as much detailed information as possible regarding your support '.
'or technical issue.',
],
'constraints' => [
new NotNull(['message' => 'Please write something for us']),
],
'help' => 'Please provide as much detailed information as possible regarding your support '.
'or technical issue.',
])
->add('captcha', Recaptcha3Type::class, [
'constraints' => new Recaptcha3(),
'action_name' => 'homepage',
// 'script_nonce_csp' => $nonceCSP,
])
->add('submit', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => ContactFormRequest::class,
]);
}
}