<?php
namespace DcSiteBundle\Form;
use CoreBundle\Entity\Vehicles\InStock;
use CoreBundle\Form\CoreFormsType;
use DcSiteBundle\Form\Transformer\BuyInStockDataFormTransformer;
use DcSiteBundle\Form\Transformer\TestDriveDataFormTransformer;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
class BuyInStockType extends CoreFormsType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$car = $options['car'] ?: null;
$carId = $car instanceof InStock ? $car->getId() : null;
$builder->add('car', HiddenType::class, [
'label' => false,
'mapped' => false,
'data' => $carId,
'attr' => ['class' => 'js-buy-f-model'],
]);
$builder->addEventListener(FormEvents::SUBMIT, function ($event): void {
(new BuyInStockDataFormTransformer($event))->transform();
});
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
$resolver->setDefined('car');
$resolver->setDefault('captcha_type', 'buy_car_in_stock_form');
}
}