src/Form/FlagsPdfType.php line 13

  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Nation;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  7. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Contracts\Translation\TranslatorInterface;
  10. class FlagsPdfType extends AbstractType
  11. {
  12.     private EntityManagerInterface $entityManager;
  13.     private TranslatorInterface $translator;
  14.     public function __construct(EntityManagerInterface $entityManagerTranslatorInterface $translator)
  15.     {
  16.         $this->entityManager $entityManager;
  17.         $this->translator $translator;
  18.     }
  19.     public function buildForm(FormBuilderInterface $builder, array $options): void
  20.     {
  21.         $formats = [
  22.             'A4' => 'A4',
  23.             'US letter' => 'Letter'
  24.         ];
  25.         $flagSizes = [
  26.                         'A bit of everything between 12mm and 28mm' => 'all',
  27.         ];
  28.         for ($i 12$i <= 30$i $i+2) {
  29.             $flagSizes[$i 'mm'] = $i 'mm';
  30.         }
  31.         $flagSizes['35mm'] = '35mm';
  32.         $flagSizes['40mm'] = '40mm';
  33.         $flagsCustom = [
  34.             'Catalunya (Estelada blava)' => 'cat-estelada_blava',
  35.             'Catalunya (Estelada vermella)' => 'cat-estelada_vermella',
  36.             'Occitània (sens l\'estela)' => 'occ-sens_l_estela',
  37.         ];
  38.         $flags $this->entityManager->getRepository(Nation::class)->findAllOrderedByOriginalNames();
  39.         $flags array_merge($flags$flagsCustom);
  40.         ksort($flags);
  41.         $builder
  42.             ->add('flag'ChoiceType::class, [
  43.                 'choices' => $flags,
  44.                 'label' => $this->translator->trans('flag_generator.flag'),
  45.             ])
  46.             ->add('flagWidth'ChoiceType::class, [
  47.                 'choices' => $flagSizes,
  48.                 'label' => $this->translator->trans('flag_generator.flag_width'),
  49.             ])
  50.             ->add('format'ChoiceType::class, [
  51.                 'choices' => $formats,
  52.                 'label' => $this->translator->trans('flag_generator.format'),
  53.             ])
  54.             ->add('submit'SubmitType::class, [
  55.                 'attr' => ['class' => 'btn btn-light'],
  56.                 'label' => $this->translator->trans('flag_generator.submit_button'),
  57.             ])
  58.         ;
  59.     }
  60. }