<?php
namespace DcSiteBundle\Form;
use CoreBundle\Form\CoreFormsType;
use DcSiteBundle\Form\Transformer\ServicesOrderDataFormTransformer;
use DcSiteBundle\Model\Form\ServicesOrderForm;
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\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ServicesOrderType extends CoreFormsType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
* @return FormBuilderInterface|null
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$locale = $options['locale'];
$serviceType = $options['servicesType'];
parent::buildForm($builder, $options);
$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event): void {
(new ServicesOrderDataFormTransformer($event))->transform();
});
if (!$serviceType) {
$builder->add('service_type', ChoiceType::class, [
'mapped' => false,
'label' => false,
'choices' => array_flip(ServicesOrderForm::getServices($locale)),
]);
return $builder;
}
$builder->add('service_type', HiddenType::class, [
'mapped' => false,
'data' => $serviceType,
'label' => false,
]);
if ($serviceType == ServicesOrderForm::MOTO_SCHOOL) {
$this->buildSchoolForm($builder, $options);
}
return $builder;
}
/**
* @param FormBuilderInterface $builder
* @param array $options
* @return FormBuilderInterface
*/
public function buildSchoolForm(FormBuilderInterface $builder, array $options)
{
$locale = $options['locale'];
$builder->add('have_license', CheckboxType::class, ['label' => $locale == 'ru' ? 'Наличие водительских прав' : 'Наявність водійського посвідчення', 'mapped' => false, 'required' => false]);
return $builder;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
$resolver->setDefault('captcha_type','services_order');
$resolver->setDefined('locale');
$resolver->setRequired('servicesType');
$resolver->setDefault('servicesType', false);
}
}