src/Form/ContactRequestType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\ContactRequest;
  4. use Doctrine\ORM\EntityRepository;
  5. use EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaV3Type;
  6. use EWZ\Bundle\RecaptchaBundle\Validator\Constraints\IsTrueV3;
  7. use Moka\Cms\Form\Type\Widget\TextareaType;
  8. use Moka\Cms\GeneratedEntity\Entry\Store;
  9. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  10. use Symfony\Component\Form\AbstractType;
  11. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextType;
  13. use Symfony\Component\Form\FormBuilderInterface;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class ContactRequestType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options)
  18.     {
  19.         $builder
  20.             ->add('store'EntityType::class, [
  21.                 'class' => Store::class,
  22.                 'label' => 'contact.label.store',
  23.                 'required' => false,
  24.                 'placeholder' => 'contact.placeholder.store',
  25.                 'attr' => ['class' => 'form__input--select'],
  26.                 'query_builder' => function (EntityRepository $repository) {
  27.                     return $repository->createQueryBuilder('s')
  28.                         ->andWhere('s.status = :status')
  29.                         ->andWhere('s.mode = :mode')
  30.                         ->setParameters([
  31.                             'mode' => Store::MODE_MAIN,
  32.                             'status' => Store::STATUS_PUBLISHED,
  33.                         ]);
  34.                 },
  35.             ])
  36.             ->add('lastname'TextType::class, [
  37.                 'label' => 'contact.label.name',
  38.                 'required' => true,
  39.             ])
  40.             ->add('firstname'TextType::class, [
  41.                 'label' => 'contact.label.firstname',
  42.                 'required' => true,
  43.             ])
  44.             ->add('zipcode'TextType::class, [
  45.                 'label' => 'contact.label.postalCode',
  46.                 'required' => true,
  47.             ])
  48.             ->add('city'TextType::class, [
  49.                 'label' => 'contact.label.city',
  50.                 'required' => false,
  51.             ])
  52.             ->add('email'EmailType::class, [
  53.                 'label' => 'contact.label.email',
  54.                 'required' => true,
  55.             ])
  56.             ->add('phone'TextType::class, [
  57.                 'label' => 'contact.label.phone',
  58.                 'required' => false,
  59.             ])
  60.             ->add('message'TextareaType::class, [
  61.                 'label' => 'contact.label.message',
  62.                 'required' => true,
  63.             ])
  64.             ->add('recaptcha'EWZRecaptchaV3Type::class, [
  65.                 'constraints' => [
  66.                     new IsTrueV3(),
  67.                 ],
  68.                 'mapped' => false,
  69.             ]);
  70.     }
  71.     public function configureOptions(OptionsResolver $resolver): void
  72.     {
  73.         $resolver->setDefaults([
  74.             'data_class' => ContactRequest::class,
  75.         ]);
  76.     }
  77. }