src/Form/FormConfigurator/RequestAQuoteFormType.php line 61

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\ChoiceType;
  15. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  16. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  17. use Symfony\Component\Form\Extension\Core\Type\TextType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  19. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  20. use Symfony\Component\Form\FormBuilderInterface;
  21. use Symfony\Component\OptionsResolver\OptionsResolver;
  22. use Symfony\Component\Validator\Constraints\NotBlank;
  23. use Symfony\Component\Form\Form;
  24. use Pimcore\Model\Document\Tag\Area\Info;
  25. use App\Document\Areabrick\AbstractAreabrick;
  26. class RequestAQuoteFormType extends AbstractFormType
  27. {
  28.     protected $formLabel 'Request a Quote (Polygraph)';
  29.     protected $emailDocumentPath '/emails/polygraph/request-a-quote';
  30.     protected $recaptcha true;
  31.     /**
  32.      * @inheritDoc
  33.      */
  34.     public function buildForm(FormBuilderInterface $builder, array $options)
  35.     {
  36.         $translator Pimcore::getContainer()->get('translator');
  37.         $customer = new Customer();
  38.         $prefixes $customer->getClass()->getFieldDefinition('prefix');
  39.         $prefixOptions = [ $translator->trans('stoelting.forms.prefix.placeholder') => '' ];
  40.         foreach ($prefixes->getOptions() as $option) {
  41.             $prefixOptions[$option['key']] = $option['value'];
  42.         }
  43.         $builder->add(
  44.                 'Prefix',
  45.                 ChoiceType::class,
  46.                 [
  47.                     'label'    => $translator->trans('stoelting.forms.prefix'),
  48.                     'placeholder' => $translator->trans('stoelting.forms.prefix.placeholder'),
  49.                     'multiple' => false,
  50.                     'choices'  => $prefixOptions,
  51.                     'choice_attr' => function ($key$val$index) {
  52.                         return empty($key) ? ['disabled' => 'disabled'] : [];
  53.                     }
  54.                 ]
  55.             )
  56.             ->add('Firstname'TextType::class, [
  57.                 'label' => $translator->trans('stoelting.forms.firstname'),
  58.                 'attr'        => [
  59.                     'placeholder' => $translator->trans('stoelting.forms.firstname.placeholder'),
  60.                 ],
  61.                 'constraints' => [
  62.                     new NotBlank([
  63.                         'message' => $translator->trans('stoelting.forms.firstname.required.message'),
  64.                     ])
  65.                 ]
  66.             ])
  67.             ->add('Lastname'TextType::class, [
  68.                 'label' => $translator->trans('stoelting.forms.lastname'),
  69.                 'attr'        => [
  70.                     'placeholder' => $translator->trans('stoelting.forms.lastname.placeholder'),
  71.                 ],
  72.                 'constraints' => [
  73.                     new NotBlank([
  74.                         'message' => $translator->trans('stoelting.forms.lastname.required.message'),
  75.                     ])
  76.                 ]
  77.             ])
  78.             ->add('StreetAddress'TextType::class, [
  79.                 'label' => $translator->trans('stoelting.forms.streetaddress'),
  80.                 'attr'        => [
  81.                     'placeholder' => $translator->trans('stoelting.forms.streetaddress.placeholder'),
  82.                 ],
  83.                 'constraints' => [
  84.                     new NotBlank([
  85.                         'message' => $translator->trans('stoelting.forms.streetaddress.required.message'),
  86.                     ])
  87.                 ]
  88.             ])
  89.             ->add('Country'TextType::class, [
  90.                 'label' => $translator->trans('stoelting.forms.country'),
  91.                 'attr'        => [
  92.                     'placeholder' => $translator->trans('stoelting.forms.country.placeholder'),
  93.                     'readonly' => false
  94.                 ],
  95.                 'constraints' => [
  96.                     new NotBlank([
  97.                         'message' => $translator->trans('stoelting.forms.country.required.message'),
  98.                     ])
  99.                 ]
  100.             ])
  101.             ->add('Email'EmailType::class, [
  102.                 'label' => $translator->trans('stoelting.forms.email'),
  103.                 'attr'        => [
  104.                     'placeholder' => $translator->trans('stoelting.forms.email.placeholder'),
  105.                     'readonly' => false
  106.                 ],
  107.                 'constraints' => [
  108.                     new NotBlank([
  109.                         'message' => $translator->trans('stoelting.forms.email.required.message'),
  110.                     ])
  111.                 ]
  112.             ])
  113.             ->add('Phone'TextType::class, [
  114.                 'label' => $translator->trans('stoelting.forms.phone'),
  115.                 'attr'        => [
  116.                     'placeholder' => $translator->trans('stoelting.forms.phone.placeholder'),
  117.                     'readonly' => false
  118.                 ],
  119.                 'constraints' => [
  120.                     new NotBlank([
  121.                         'message' => $translator->trans('stoelting.forms.phone.required.message'),
  122.                     ])
  123.                 ]
  124.             ])
  125.             ->add('Items'TextType::class, [
  126.                 'label' => $translator->trans('stoelting.forms.items'),
  127.                 'attr'        => [
  128.                     'placeholder' => $translator->trans('stoelting.forms.items.placeholder'),
  129.                 ],
  130.                 'constraints' => [
  131.                     new NotBlank([
  132.                         'message' => $translator->trans('stoelting.forms.items.required.message'),
  133.                     ])
  134.                 ]
  135.             ])
  136.             ->add('Message'TextareaType::class, [
  137.                 'label' => $translator->trans('stoelting.forms.message'),
  138.                 'attr'        => [
  139.                     'placeholder' => $translator->trans('stoelting.forms.message.placeholder'),
  140.                     'readonly' => false,
  141.                     'rows' => 5,
  142.                     'max' => 500
  143.                 ],
  144.                 'constraints' => [
  145.                     new NotBlank([
  146.                         'message' => $translator->trans('stoelting.forms.message.required.message'),
  147.                     ])
  148.                 ]
  149.             ])
  150.             ->add('g-recaptcha-response'HiddenType::class, [
  151.                 'attr' => [
  152.                     'id' => 'g-recaptcha-response'
  153.                 ],
  154.             ])
  155.             ->add('action'HiddenType::class, [
  156.                 'attr' => [
  157.                     'id' => 'validate_captcha'
  158.                 ],
  159.                 'data' => 'requestAQuoteForm'
  160.             ])
  161.             ->add('_submit'SubmitType::class, [
  162.                 'label' => $translator->trans('stoelting.forms.send'),
  163.                 'attr' => [
  164.                     'class' => 'btn btn-primary',
  165.                     'onclick' => 'onSubmit()'
  166.                 ]
  167.             ]);
  168.     }
  169.     /**
  170.      * @inheritDoc
  171.      */
  172.     public function getBlockPrefix()
  173.     {
  174.         return '';
  175.     }
  176.     /**
  177.      * @inheritDoc
  178.      */
  179.     public function configureOptions(OptionsResolver $resolver)
  180.     {
  181.     }
  182. }