src/Form/Type/MessageFormType.php line 19

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Form\Type;
  4. use App\Enum\MessageTypeEnum;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  7. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\Form\Extension\Core\Type\EnumType;
  10. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextType;
  13. use Symfony\Component\Form\FormBuilderInterface;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class MessageFormType extends AbstractType
  16. {
  17.     private TranslatorInterface $translator;
  18.     public function __construct(TranslatorInterface $translator)
  19.     {
  20.         $this->translator $translator;
  21.     }
  22.     public function buildForm(FormBuilderInterface $builder, array $options): void
  23.     {
  24.         $typeChoices = [];
  25.         foreach (MessageTypeEnum::cases() as $case) {
  26.             if ($case) {
  27.                 $label $this->translator->trans(('message.' $case), [], 'enum');
  28.                 $typeChoices[$label] = $case;
  29.             }
  30.         }
  31.         $builder
  32.             ->add('type'ChoiceType::class, [ 'choices' => $typeChoices ])
  33.             ->add('name'TextType::class)
  34.             ->add('phoneNumber'TextType::class)
  35.             ->add('email'EmailType::class)
  36.             ->add('message'TextareaType::class)
  37.             ->add('privacyPolicyAccepted'CheckboxType::class)
  38.             ->add('send'SubmitType::class);
  39.     }
  40. }