<?php
/**
* Pimcore Customer Management Framework Bundle
* Full copyright and license information is available in
* LICENSE.md which is distributed with this source code.
*
* @copyright Copyright (C) Elements.at New Media Solutions GmbH
* @license GPLv3
*/
namespace App\Form\FormConfigurator;
use Pimcore;
use Pimcore\Model\DataObject\Customer;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Regex;
class ContactUsFormType extends AbstractFormType
{
protected $formLabel = 'Contact Us (No Division)';
protected $emailDocumentPath = '/emails/contact-us';
protected $recaptcha = true;
/**
* @inheritDoc
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$translator = Pimcore::getContainer()->get('translator');
$customer = new Customer();
$prefixes = $customer->getClass()->getFieldDefinition('prefix');
$prefixOptions = [ $translator->trans('stoelting.forms.prefix.placeholder') => '' ];
foreach ($prefixes->getOptions() as $option) {
$prefixOptions[$option['key']] = $option['value'];
}
$builder
->add(
'Prefix',
ChoiceType::class,
[
'label' => $translator->trans('stoelting.forms.prefix'),
'placeholder' => $translator->trans('stoelting.forms.prefix.placeholder'),
'multiple' => false,
'choices' => $prefixOptions,
'choice_attr' => function ($key, $val, $index) {
return empty($key) ? ['disabled' => 'disabled'] : [];
}
]
)
->add('Firstname', TextType::class, [
'label' => $translator->trans('stoelting.forms.firstname'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.firstname.placeholder'),
],
'constraints' => [
new NotBlank([
'message' => $translator->trans('stoelting.forms.firstname.required.message'),
])
]
])
->add('Lastname', TextType::class, [
'label' => $translator->trans('stoelting.forms.lastname'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.lastname.placeholder'),
],
'constraints' => [
new NotBlank([
'message' => $translator->trans('stoelting.forms.lastname.required.message'),
])
]
])
->add('Company', TextType::class, [
'label' => $translator->trans('stoelting.forms.company'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.company.placeholder'),
'readonly' => false
]
])
->add('Country', TextType::class, [
'label' => $translator->trans('stoelting.forms.country'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.country.placeholder'),
'readonly' => false
],
'constraints' => [
new NotBlank([
'message' => $translator->trans('stoelting.forms.country.required.message'),
])
]
])
->add('Email', EmailType::class, [
'label' => $translator->trans('stoelting.forms.email'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.email.placeholder'),
'readonly' => false
],
'constraints' => [
new NotBlank([
'message' => $translator->trans('stoelting.forms.email.required.message'),
]),
new Regex(
[
'pattern' => '/[^@]+@[^\.]+\..+/',
'message' => $translator->trans('stoelting.invalid-email-check'),
]
)
]
])
->add('Phone', TextType::class, [
'label' => $translator->trans('stoelting.forms.phone'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.phone.placeholder'),
'readonly' => false
],
'constraints' => [
new NotBlank([
'message' => $translator->trans('stoelting.forms.phone.required.message'),
])
]
])
->add('Message', TextareaType::class, [
'label' => $translator->trans('stoelting.forms.message'),
'attr' => [
'placeholder' => $translator->trans('stoelting.forms.message.placeholder'),
'readonly' => false,
'rows' => 5,
'max' => 500
],
'constraints' => [
new NotBlank([
'message' => $translator->trans('stoelting.forms.message.required.message'),
])
]
])
->add('g-recaptcha-response', HiddenType::class, [
'attr' => [
'id' => 'g-recaptcha-response'
],
])
->add('action', HiddenType::class, [
'attr' => [
'id' => 'validate_captcha'
],
'data' => 'contactForm'
])
->add('_submit', ButtonType::class, [
'label' => $translator->trans('stoelting.forms.send'),
'attr' => [
'class' => 'btn btn-primary',
'onclick' => 'onSubmit()'
]
]);
}
/**
* @inheritDoc
*/
public function getBlockPrefix()
{
return '';
}
/**
* @inheritDoc
*/
public function configureOptions(OptionsResolver $resolver)
{
}
}