src/DcSiteBundle/Form/CallMeType.php line 13

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Form;
  3. use CoreBundle\Entity\Dealer;
  4. use CoreBundle\Form\CoreFormsType;
  5. use Doctrine\ORM\EntityRepository;
  6. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  7. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. class CallMeType extends CoreFormsType
  11. {
  12.     public function buildForm(FormBuilderInterface $builder, array $options)
  13.     {
  14.         $isIncludeWhatsapp $options['is_include_whatsapp'];
  15.         $isIncludeDealer $options['is_include_dealer'];
  16.         unset($options['is_include_whatsapp'], $options['is_include_dealer']);
  17.         parent::buildForm($builder$options);
  18.         $translator $options['translator'];
  19.         $messageType = [
  20.             'call' => $translator->trans('form.call', [], 'dc_base'),
  21.             'viber' => 'Viber',
  22. //            'telegram' => 'Telegram',
  23.         ];
  24.         if ($isIncludeWhatsapp) {
  25.             $messageType['whatsapp'] = 'WhatsApp';
  26.         }
  27.         $builder->add('message_type'ChoiceType::class, [
  28.             'choices' => array_flip($messageType),
  29.             'required' => true,
  30.             'mapped' => false,
  31.             'label' => false,
  32.             'expanded' => true,
  33.             'multiple' => false,
  34.             'data' => 'call',
  35.         ]);
  36.         if ($isIncludeDealer) {
  37.             $builder->add('dealer'EntityType::class, [
  38.                 'class' => Dealer::class,
  39.                 'choice_label' => fn($dealer) => $dealer->getNameByLocale($translator->getLocale()),
  40.                 'label' => false,
  41.                 'required' => false,
  42.                 'attr' => [
  43.                     'required' => 'required' // додає required на фронтенді
  44.                 ],
  45.                 'query_builder' => fn(EntityRepository $er) => $er->createQueryBuilder('d')
  46.                     ->where('d.id NOT IN (:dealerIds)')
  47.                     ->setParameter('dealerIds', [57163639404144]),
  48.                 'placeholder' => $translator->trans('car_page.dealer_center', [], 'dc_base'),
  49.             ]);
  50.         }
  51.     }
  52.     /**
  53.      * @param OptionsResolver $resolver
  54.      */
  55.     public function configureOptions(OptionsResolver $resolver)
  56.     {
  57.         parent::configureOptions($resolver);
  58.         $resolver->setDefault('captcha_type''call_me_form');
  59.         $resolver
  60.             ->setDefined('is_include_whatsapp')
  61.             ->setDefined('is_include_dealer');
  62.     }
  63. }