src/Form/FormConfigurator/ContactUsPolygraphFormType.php line 31

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore Customer Management Framework Bundle
  4.  * Full copyright and license information is available in
  5.  * LICENSE.md which is distributed with this source code.
  6.  *
  7.  * @copyright  Copyright (C) Elements.at New Media Solutions GmbH
  8.  * @license    GPLv3
  9.  */
  10. namespace App\Form\FormConfigurator;
  11. use Pimcore;
  12. use Pimcore\Model\DataObject\Customer;
  13. use Symfony\Component\Form\AbstractType;
  14. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  15. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  16. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  17. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextType;
  19. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  20. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  21. use Symfony\Component\Form\FormBuilderInterface;
  22. use Symfony\Component\OptionsResolver\OptionsResolver;
  23. use Symfony\Component\Validator\Constraints\NotBlank;
  24. use Symfony\Component\Form\Form;
  25. use Pimcore\Model\Document\Tag\Area\Info;
  26. use App\Document\Areabrick\AbstractAreabrick;
  27. class ContactUsPolygraphFormType extends AbstractFormType
  28. {
  29.     protected $formLabel 'Contact Us (Polygraph)';
  30.     protected $emailDocumentPath '/emails/polygraph/contact-us';
  31.     protected $recaptcha true;
  32.     /**
  33.      * @inheritDoc
  34.      */
  35.     public function buildForm(FormBuilderInterface $builder, array $options)
  36.     {
  37.         $translator Pimcore::getContainer()->get('translator');
  38.         $customer = new Customer();
  39.         $prefixes $customer->getClass()->getFieldDefinition('prefix');
  40.         $prefixOptions = [ $translator->trans('stoelting.forms.prefix.placeholder') => '' ];
  41.         foreach ($prefixes->getOptions() as $option) {
  42.             $prefixOptions[$option['key']] = $option['value'];
  43.         }
  44.         $builder->add(
  45.                 'Prefix',
  46.                 ChoiceType::class,
  47.                 [
  48.                     'label'    => $translator->trans('stoelting.forms.prefix'),
  49.                     'placeholder' => $translator->trans('stoelting.forms.prefix.placeholder'),
  50.                     'multiple' => false,
  51.                     'choices'  => $prefixOptions,
  52.                     'choice_attr' => function ($key$val$index) {
  53.                         return empty($key) ? ['disabled' => 'disabled'] : [];
  54.                     }
  55.                 ]
  56.             )
  57.             ->add('Firstname'TextType::class, [
  58.                 'label' => $translator->trans('stoelting.forms.firstname'),
  59.                 'attr'        => [
  60.                     'placeholder' => $translator->trans('stoelting.forms.firstname.placeholder'),
  61.                 ],
  62.                 'constraints' => [
  63.                     new NotBlank([
  64.                         'message' => $translator->trans('stoelting.forms.firstname.required.message'),
  65.                     ])
  66.                 ]
  67.             ])
  68.             ->add('Lastname'TextType::class, [
  69.                 'label' => $translator->trans('stoelting.forms.lastname'),
  70.                 'attr'        => [
  71.                     'placeholder' => $translator->trans('stoelting.forms.lastname.placeholder'),
  72.                 ],
  73.                 'constraints' => [
  74.                     new NotBlank([
  75.                         'message' => $translator->trans('stoelting.forms.lastname.required.message'),
  76.                     ])
  77.                 ]
  78.             ])
  79.             ->add('Company'TextType::class, [
  80.                 'label' => $translator->trans('stoelting.forms.institution_company'),
  81.                 'attr'        => [
  82.                     'placeholder' => $translator->trans('stoelting.forms.institution_company.placeholder'),
  83.                     'readonly' => false
  84.                 ]
  85.             ])
  86.             ->add('Country'TextType::class, [
  87.                 'label' => $translator->trans('stoelting.forms.country'),
  88.                 'attr'        => [
  89.                     'placeholder' => $translator->trans('stoelting.forms.country.placeholder'),
  90.                     'readonly' => false
  91.                 ],
  92.                 'constraints' => [
  93.                     new NotBlank([
  94.                         'message' => $translator->trans('stoelting.forms.country.required.message'),
  95.                     ])
  96.                 ]
  97.             ])
  98.             ->add('Email'EmailType::class, [
  99.                 'label' => $translator->trans('stoelting.forms.email'),
  100.                 'attr'        => [
  101.                     'placeholder' => $translator->trans('stoelting.forms.email.placeholder'),
  102.                     'readonly' => false
  103.                 ],
  104.                 'constraints' => [
  105.                     new NotBlank([
  106.                         'message' => $translator->trans('stoelting.forms.email.required.message'),
  107.                     ])
  108.                 ]
  109.             ])
  110.             ->add('Phone'TextType::class, [
  111.                 'label' => $translator->trans('stoelting.forms.phone'),
  112.                 'attr'        => [
  113.                     'placeholder' => $translator->trans('stoelting.forms.phone.placeholder'),
  114.                     'readonly' => false
  115.                 ],
  116.                 'constraints' => [
  117.                     new NotBlank([
  118.                         'message' => $translator->trans('stoelting.forms.phone.required.message'),
  119.                     ])
  120.                 ]
  121.             ])
  122.             ->add('Message'TextareaType::class, [
  123.                 'label' => $translator->trans('stoelting.forms.message'),
  124.                 'attr'        => [
  125.                     'placeholder' => $translator->trans('stoelting.forms.message.placeholder'),
  126.                     'readonly' => false,
  127.                     'rows' => 5,
  128.                     'max' => 500
  129.                 ],
  130.                 'constraints' => [
  131.                     new NotBlank([
  132.                         'message' => $translator->trans('stoelting.forms.message.required.message'),
  133.                     ])
  134.                 ]
  135.             ])
  136.             ->add('g-recaptcha-response'HiddenType::class, [
  137.                 'attr' => [
  138.                     'id' => 'g-recaptcha-response'
  139.                 ],
  140.             ])
  141.             ->add('action'HiddenType::class, [
  142.                 'attr' => [
  143.                     'id' => 'validate_captcha'
  144.                 ],
  145.                 'data' => 'polygraphContactForm'
  146.             ])
  147.             ->add('_submit'ButtonType::class, [
  148.                 'label' => $translator->trans('stoelting.forms.send'),
  149.                 'attr' => [
  150.                     'class' => 'btn btn-primary',
  151.                     'onclick' => 'onSubmit()'
  152.                 ]
  153.             ]);
  154.     }
  155.     /**
  156.      * @inheritDoc
  157.      */
  158.     public function getBlockPrefix()
  159.     {
  160.         return '';
  161.     }
  162.     /**
  163.      * @inheritDoc
  164.      */
  165.     public function configureOptions(OptionsResolver $resolver)
  166.     {
  167.     }
  168. }