<?php
namespace DcSiteBundle\Form;
use CoreBundle\Entity\Dealer;
use CoreBundle\Entity\Forms;
use CoreBundle\Entity\Vehicles\Vehicle;
use CoreBundle\Form\CoreFormsType;
use DcSiteBundle\Form\Transformer\TestDriveDataFormTransformer;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\Translation\TranslatorInterface;
class TestDriveType extends CoreFormsType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder,$options);
$Dealer = $options['dealer'];
$dealerId = (!is_null($Dealer))?$Dealer->getId() : null;
$isUsed = $options['is_used'];
$queryBuilder = $options['query_builder'];
/** @var TranslatorInterface $Translator */
$Translator = $options['translator'];
$withChild = $options['child'];
$widthTime = $options['widthTime'];
$communicationType = $options['communication'];
$builder->add('dealer', HiddenType::class, ['mapped' => false, 'data' => $dealerId]);
if($builder->getForm()->getData()->getVehicle()) {
$builder->add('vehicle', HiddenType::class, ['mapped' => false, 'data' => $builder->getForm()->getData()->getVehicle()->getId()]);
} else {
$builder->add('vehicle', HiddenType::class, ['mapped' => false]);
}
$builder->add('tdCars', TextType::class, ['mapped' => false, 'required' => false]);
$builder->add('route', HiddenType::class, ['mapped' => false]);
$builder->add('callback', HiddenType::class, ['mapped' => false]);
if($communicationType) {
$builder
->add('communication', ChoiceType::class, [
'label' => $Translator->trans('form.communication',[],'dc_base'),
'required' => true,
'mapped' => false,
'data' => 'phone',
'choices' => array_flip(['phone' => 'Телефон', 'email' => 'E-mail', 'viber' => 'Viber']),
'expanded' => true,
'multiple' => false,
'attr' => [
'class' => 'js-td-communication checkbox__btn'
],
]
);
}
if($withChild) {
$builder
->add('with_child', CheckboxType::class, [
'label' => $Translator->trans('form.with_child',[],'dc_base'),
'required' => false,
'mapped' => false,
'attr' => [
'class' => 'js-td-child'
],
]
);
}
}
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
$resolver->setDefault('captcha_type', 'test_drive_form')
->setDefault('is_used', false)
->setDefault('query_builder', false)
->setDefault('child', false)
->setDefault('widthTime', true)
->setDefault('communication', false)
->setRequired('dealer')
;
}
}