src/Form/ContributorType.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Contributor;
  4. use App\Entity\Media;
  5. use App\Service\Helpers;
  6. use App\Service\SiteConfig;
  7. use MeteoConcept\HCaptchaBundle\Form\HCaptchaType;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\Extension\Core\Type\FileType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\OptionsResolver\OptionsResolver;
  14. class ContributorType extends AbstractType
  15. {
  16.     public function __construct(
  17.         private SiteConfig $config,
  18.         private Helpers $helpers,
  19.     )
  20.     {}
  21.     public function buildForm(FormBuilderInterface $builder, array $options): void
  22.     {
  23.         if($this->config->isField1()) $builder
  24.             ->add('field1'TextType::class, [
  25.                 'required' => $this->config->isField1Required() ?? false,
  26.                 'attr' => [
  27.                     'class' =>'form-control valid m-1',
  28.                     'placeholder' => $this->config->getField1Label()
  29.                 ],
  30.             ]);
  31.         if($this->config->isField2()) $builder
  32.             ->add('field2'TextType::class, [
  33.                 'required' => $this->config->isField2Required() ?? false,
  34.                 'attr' => [
  35.                     'class' =>'form-control valid m-1',
  36.                     'placeholder' => $this->config->getField2Label()
  37.                 ],
  38.             ]);
  39.         if($this->config->isField3()) $builder
  40.             ->add('field3'TextType::class, [
  41.                 'required' => $this->config->isField3Required() ?? false,
  42.                 'attr' => [
  43.                     'class' =>'form-control valid m-1',
  44.                     'placeholder' => $this->config->getField3Label()
  45.                 ],
  46.             ]);
  47.         if($this->config->isField4()) $builder
  48.             ->add('field4'TextType::class, [
  49.             'required' => $this->config->isField4Required() ?? false,
  50.             'attr' => [
  51.                 'class' =>'form-control valid m-1',
  52.                 'placeholder' => $this->config->getField4Label()
  53.             ],
  54.         ]);
  55.         if($this->config->isField5()) $builder
  56.             ->add('field5'TextType::class, [
  57.             'label' => false,
  58.             'required' => $this->config->isField5Required() ?? false,
  59.             'attr' => [
  60.                 'class' =>'form-control valid m-1',
  61.                 'placeholder' => $this->config->getField5Label()
  62.             ],
  63.         ]);
  64.         if($this->config->isField6()) $builder
  65.             ->add('field6'TextType::class, [
  66.                 'required' => $this->config->isField6Required() ?? false,
  67.                 'attr' => [
  68.                     'class' =>'form-control valid m-1',
  69.                     'placeholder' => $this->config->getField6Label()
  70.                 ],
  71.             ]);
  72.         if($this->config->isField7()) $builder
  73.             ->add('field7'TextType::class, [
  74.                 'label' => false,
  75.                 'required' => $this->config->isField7Required() ?? false,
  76.                 'attr' => [
  77.                     'class' =>'form-control valid m-1',
  78.                     'placeholder' => $this->config->getField7Label()
  79.                 ],
  80.             ]);
  81.         if($this->config->isTextarea()) $builder
  82.             ->add('textarea'TextareaType::class, [
  83.                 'label' => $this->config->isTextareaRequired() ?? false,
  84.                 'required' => true,
  85.                 'attr' => [
  86.                     'class' =>'form-control valid m-1',
  87.                     'placeholder' => $this->config->getTextareaLabel()
  88.                 ],
  89.             ]);
  90.         if($this->config->isMedia()) $builder->add('media'FileType::class,[
  91.             'label' => false,
  92.             'multiple' => true,
  93.             'mapped' => false,
  94.             'required' => false,
  95.             'help_html' => true,
  96.             'help' => $this->helpers->getMediaHelp(),
  97.             'attr' => [
  98.                 'accept' => implode(','Media::UPLOAD_MIMES),
  99.             ],
  100.             'row_attr' => ['class' => 'mb-3'],
  101.         ]);
  102.         if($this->config->isCaptcha())  $builder->add('captcha'HCaptchaType::class, [
  103.             'label' => 'Anti-bot test',
  104.             // optionally: use a different site key than the default one:
  105.             'hcaptcha_site_key' => 'f8a3c2c2-4a6c-40d4-944f-16bcc5bae7d2',
  106.         ]);
  107.     }
  108.     public function configureOptions(OptionsResolver $resolver): void
  109.     {
  110.         $resolver->setDefaults([
  111.             'data_class' => Contributor::class
  112.         ]);
  113.     }
  114. }