src/DcSiteBundle/Form/VacancyType.php line 24

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Form;
  3. use CoreBundle\Entity\Forms;
  4. use CoreBundle\Services\FileUploader;
  5. use DcSiteBundle\Entity\VacancyForm;
  6. use DcSiteBundle\Form\Transformer\VacancyDataFormTransformer;
  7. use DcSiteBundle\Form\Transformer\VacancyIdToEntityTransformer;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  10. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  11. use Symfony\Component\Form\Extension\Core\Type\FileType;
  12. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  13. use Symfony\Component\Form\Extension\Core\Type\TelType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextType;
  15. use Symfony\Component\Form\FormBuilderInterface;
  16. use Symfony\Component\Form\FormEvent;
  17. use Symfony\Component\Form\FormEvents;
  18. use Symfony\Component\OptionsResolver\OptionsResolver;
  19. use Symfony\Contracts\Translation\TranslatorInterface;
  20. class VacancyType extends AbstractType
  21. {
  22.     /**
  23.      * @var VacancyIdToEntityTransformer
  24.      */
  25.     private $entityTransformer;
  26.     /**
  27.      * @var FileUploader
  28.      */
  29.     private $uploader;
  30.     /**
  31.      * VacancyType constructor.
  32.      * @param VacancyIdToEntityTransformer $entityTransformer
  33.      * @param FileUploader $uploader
  34.      */
  35.     public function __construct(VacancyIdToEntityTransformer $entityTransformerFileUploader $uploader)
  36.     {
  37.         $this->entityTransformer $entityTransformer;
  38.         $this->uploader $uploader;
  39.     }
  40.     /**
  41.      * @param FormBuilderInterface $builder
  42.      * @param array $options
  43.      * @return int|void
  44.      */
  45.     public function buildForm(FormBuilderInterface $builder, array $options)
  46.     {
  47.         /** @var TranslatorInterface $Translator */
  48.         $Translator $options['translator'];
  49.         $builder
  50.             ->add('name',  TextType::class, [
  51.                 'label' => false,
  52.                 'attr' => [
  53.                     'class' => 'vacancy-name',
  54.                     'maxlength' => '50',
  55.                     'pattern' => "\S([a-zA-ZА-Яа-яёЁЇїІіЄєҐґ\s]{1,})$",
  56.                     'title' => $Translator->trans('form.warning', [], 'dc_base'),
  57.                     'placeholder' => $Translator->trans('form.name', [], 'dc_base')
  58.                 ],
  59.             ])
  60.             ->add('email'EmailType::class, [
  61.                 'label' => false,
  62.                 'required' => false,
  63.                 'attr' => [
  64.                     'class' => 'vacancy-email',
  65.                     'placeholder' => 'E-mail',
  66.                 ],
  67.             ])
  68.             ->add('privacy'CheckboxType::class, [
  69.                 'label' => false,
  70.                 'required' => false,
  71.                 'mapped' => false,
  72.                 'attr' => [
  73.                     'class' => 'js-privacy'
  74.                 ]
  75.             ])
  76.             ->add('phone'TelType::class, [
  77.                 'label' => false,
  78.                 'attr' => [
  79.                     'class' => 'vacancy-phone phone form-control',
  80.                     'placeholder' => $Translator->trans('form.phone', [], 'dc_base')
  81.                 ],
  82.             ])
  83.             ->add('cv'FileType::class, [
  84.                 'label' => false,
  85.                 'attr' => [
  86.                     'class' => 'vacancy-cv',
  87.                 ],
  88.             ])
  89.             ->add('vacancy'HiddenType::class, [
  90.                 'required' => false,
  91.                 'attr' => [
  92.                     'class' => 'vacancy-vacancy',
  93.                 ],
  94.             ])
  95.         ;
  96.         $builder->get('vacancy')->addModelTransformer($this->entityTransformer);
  97.         if ($options['vacancy']) {
  98.             $builder->get('vacancy')->setData($options['vacancy']);
  99.         }
  100.     }
  101.     /**
  102.      * @param OptionsResolver $resolver
  103.      */
  104.     public function configureOptions(OptionsResolver $resolver)
  105.     {
  106.         parent::configureOptions($resolver);
  107.         $resolver->setDefaults([
  108.             'data_class' => VacancyForm::class,
  109.         ])
  110.             ->setRequired('translator')
  111.             ->setDefined('vacancy')
  112.             ->setDefined('dealer')
  113.         ;
  114.     }
  115. }