src/DcSiteBundle/Form/TestDriveType.php line 22

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Form;
  3. use CoreBundle\Entity\Dealer;
  4. use CoreBundle\Entity\Forms;
  5. use CoreBundle\Entity\Vehicles\Vehicle;
  6. use CoreBundle\Form\CoreFormsType;
  7. use DcSiteBundle\Form\Transformer\TestDriveDataFormTransformer;
  8. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  9. use Symfony\Component\Form\CallbackTransformer;
  10. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  11. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  12. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\FormBuilderInterface;
  15. use Symfony\Component\Form\FormEvents;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. class TestDriveType extends CoreFormsType
  19. {
  20.     public function buildForm(FormBuilderInterface $builder, array $options)
  21.     {
  22.         parent::buildForm($builder,$options);
  23.         $Dealer $options['dealer'];
  24.         $dealerId = (!is_null($Dealer))?$Dealer->getId() : null;
  25.         $isUsed $options['is_used'];
  26.         $queryBuilder $options['query_builder'];
  27.         /** @var TranslatorInterface $Translator */
  28.         $Translator $options['translator'];
  29.         $withChild $options['child'];
  30.         $widthTime $options['widthTime'];
  31.         $communicationType $options['communication'];
  32.         $builder->add('dealer'HiddenType::class, ['mapped' => false'data' => $dealerId]);
  33.         if($builder->getForm()->getData()->getVehicle()) {
  34.             $builder->add('vehicle'HiddenType::class, ['mapped' => false'data' => $builder->getForm()->getData()->getVehicle()->getId()]);
  35.         } else {
  36.             $builder->add('vehicle'HiddenType::class, ['mapped' => false]);
  37.         }
  38.         $builder->add('tdCars'TextType::class, ['mapped' => false'required' => false]);
  39.         $builder->add('route'HiddenType::class, ['mapped' => false]);
  40.         $builder->add('callback'HiddenType::class, ['mapped' => false]);
  41.         if($communicationType) {
  42.             $builder
  43.                 ->add('communication'ChoiceType::class, [
  44.                         'label' => $Translator->trans('form.communication',[],'dc_base'),
  45.                         'required' => true,
  46.                         'mapped' => false,
  47.                         'data' => 'phone',
  48.                         'choices' => array_flip(['phone' => 'Телефон''email' => 'E-mail''viber' => 'Viber']),
  49.                         'expanded' => true,
  50.                         'multiple' => false,
  51.                         'attr' => [
  52.                             'class' => 'js-td-communication checkbox__btn'
  53.                         ],
  54.                     ]
  55.                 );
  56.         }
  57.         if($withChild) {
  58.             $builder
  59.                 ->add('with_child'CheckboxType::class, [
  60.                         'label' => $Translator->trans('form.with_child',[],'dc_base'),
  61.                         'required' => false,
  62.                         'mapped' => false,
  63.                         'attr' => [
  64.                             'class' => 'js-td-child'
  65.                         ],
  66.                     ]
  67.                 );
  68.         }
  69.     }
  70.     public function configureOptions(OptionsResolver $resolver)
  71.     {
  72.         parent::configureOptions($resolver);
  73.         $resolver->setDefault('captcha_type''test_drive_form')
  74.             ->setDefault('is_used'false)
  75.             ->setDefault('query_builder'false)
  76.             ->setDefault('child'false)
  77.             ->setDefault('widthTime'true)
  78.             ->setDefault('communication'false)
  79.             ->setRequired('dealer')
  80.         ;
  81.     }
  82. }