src/DcSiteBundle/Form/ServicesOrderType.php line 18

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Form;
  3. use CoreBundle\Form\CoreFormsType;
  4. use DcSiteBundle\Form\Transformer\ServicesOrderDataFormTransformer;
  5. use DcSiteBundle\Model\Form\ServicesOrderForm;
  6. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  7. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  8. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\Form\FormEvent;
  11. use Symfony\Component\Form\FormEvents;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. class ServicesOrderType extends CoreFormsType
  14. {
  15.     /**
  16.      * @param FormBuilderInterface $builder
  17.      * @param array $options
  18.      * @return FormBuilderInterface|null
  19.      */
  20.     public function buildForm(FormBuilderInterface $builder, array $options)
  21.     {
  22.         $locale $options['locale'];
  23.         $serviceType $options['servicesType'];
  24.         parent::buildForm($builder$options);
  25.         $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event): void {
  26.             (new ServicesOrderDataFormTransformer($event))->transform();
  27.         });
  28.         if (!$serviceType) {
  29.             $builder->add('service_type'ChoiceType::class, [
  30.                 'mapped' => false,
  31.                 'label' => false,
  32.                 'choices' => array_flip(ServicesOrderForm::getServices($locale)),
  33.             ]);
  34.             return $builder;
  35.         }
  36.         $builder->add('service_type'HiddenType::class, [
  37.             'mapped' => false,
  38.             'data' => $serviceType,
  39.             'label' => false,
  40.         ]);
  41.         if ($serviceType == ServicesOrderForm::MOTO_SCHOOL) {
  42.             $this->buildSchoolForm($builder$options);
  43.         }
  44.         return $builder;
  45.     }
  46.     /**
  47.      * @param FormBuilderInterface $builder
  48.      * @param array $options
  49.      * @return FormBuilderInterface
  50.      */
  51.     public function buildSchoolForm(FormBuilderInterface $builder, array $options)
  52.     {
  53.         $locale $options['locale'];
  54.         $builder->add('have_license'CheckboxType::class, ['label' => $locale == 'ru' 'Наличие водительских прав' 'Наявність водійського посвідчення''mapped' => false'required' => false]);
  55.         return $builder;
  56.     }
  57.     /**
  58.      * @param OptionsResolver $resolver
  59.      */
  60.     public function configureOptions(OptionsResolver $resolver)
  61.     {
  62.         parent::configureOptions($resolver);
  63.         $resolver->setDefault('captcha_type','services_order');
  64.         $resolver->setDefined('locale');
  65.         $resolver->setRequired('servicesType');
  66.         $resolver->setDefault('servicesType'false);
  67.     }
  68. }