<?php
namespace App\Form\Type;
use Doctrine\DBAL\Types\TextType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
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\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
class ContactFormType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$data = isset($options['data']) ? $options['data'] : null;
/* Initalize function variables */
$newsletterselect = [];
// $advancedNewsletter = true;
if (isset($options['newsletterElements'])) {
/* fill newsletter array */
foreach($options['newsletterElements'] as $newsletterElement) {
array_push($newsletterselect, array(
$newsletterElement->getTitle() => $newsletterElement->getID())
);
}
}
$builder
->setAction(isset($data['route']) ? $data['route'] : '')
->add('customerEmail', HiddenType::class, [])
->add('companyEmail', HiddenType::class, [])
->add('successPage', HiddenType::class, [])
->add('errorPage', HiddenType::class, [])
->add('requestLocale', HiddenType::class, [])
->add('mailC', HiddenType::class, [])
->add('makler', HiddenType::class, [])
->add('initts', HiddenType::class, [
'data' => time()
])
->add('origin', ChoiceType::class, [
'label' => 'mvk_doc_be_form_contact_label_origin',
'required' => true,
'choices' => [
'mvk_doc_be_form_contact_label_placeholder_option' => '',
'mvk_doc_be_form_contact_label_origin_privatecustomer' => $data['trans']->trans('mvk_doc_be_form_contact_label_origin_privatecustomer'),
'mvk_doc_be_form_contact_label_origin_firmcustomer' => $data['trans']->trans('mvk_doc_be_form_contact_label_origin_firmcustomer'),
'mvk_doc_be_form_contact_label_origin_management' => $data['trans']->trans('mvk_doc_be_form_contact_label_origin_management'),
],
'choice_attr' => [
'mvk_doc_be_form_contact_label_placeholder_option' => [
'disabled' => 'disabled',
],
],
])
->add('salutation', ChoiceType::class, [
'label' => 'mvk_doc_be_form_contact_label_salutation',
'required' => true,
'choices' => [
'mvk_doc_be_form_contact_label_placeholder_option' => '',
'mvk_doc_be_form_contact_label_salutation_male' => $data['trans']->trans('mvk_doc_be_form_contact_label_salutation_male'),
'mvk_doc_be_form_contact_label_salutation_female' => $data['trans']->trans('mvk_doc_be_form_contact_label_salutation_female'),
'mvk_doc_be_form_contact_label_salutation_divers' => $data['trans']->trans('mvk_doc_be_form_contact_label_salutation_divers'),
],
'choice_attr' => [
'mvk_doc_be_form_contact_label_placeholder_option' => [
'disabled' => 'disabled',
],
]
])
->add('firstname', null, [
'label' => 'mvk_doc_be_form_contact_label_firstname',
'required' => true
])
->add('lastname', null, [
'label' => 'mvk_doc_be_form_contact_label_lastname',
'required' => true
])
->add('company', null, [
'label' => 'mvk_doc_be_form_contact_label_company',
'required' => false
])
->add('email', EmailType::class, [
'label' => 'mvk_doc_be_form_contact_label_mail',
'required' => true
])
->add('phone', null, [
'label' => 'mvk_doc_be_form_contact_label_phone',
'required' => false
])
->add('policynumber', null, [
'label' => 'mvk_doc_be_form_contact_label_policynumber',
'required' => false
])
->add('vermitlknummber', null, [
'label' => 'mvk_doc_be_form_contact_label_vermitlknummber',
'required' => false
])
->add('subject', ChoiceType::class, [
'label' => 'mvk_doc_be_form_contact_label_subject',
'required' => true,
'choices' => [
'mvk_doc_be_form_contact_label_placeholder_option' => '',
'mvk_doc_be_form_contact_label_subject_option1' => $data['trans']->trans('mvk_doc_be_form_contact_label_subject_option1'),
'mvk_doc_be_form_contact_label_subject_option2' => $data['trans']->trans('mvk_doc_be_form_contact_label_subject_option2'),
'mvk_doc_be_form_contact_label_subject_option3' => $data['trans']->trans('mvk_doc_be_form_contact_label_subject_option3'),
'mvk_doc_be_form_contact_label_subject_option4' => $data['trans']->trans('mvk_doc_be_form_contact_label_subject_option4'),
'mvk_doc_be_form_contact_label_subject_option5' => $data['trans']->trans('mvk_doc_be_form_contact_label_subject_option5'),
'mvk_doc_be_form_contact_label_subject_option6' => $data['trans']->trans('mvk_doc_be_form_contact_label_subject_option6'),
],
'choice_attr' => [
'mvk_doc_be_form_contact_label_placeholder_option' => [
'disabled' => 'disabled',
],
]
])
->add('message', TextareaType::class, [
'label' => 'mvk_doc_be_form_contact_label_message',
'required' => true
])
->add('contactme', ChoiceType::class, [
'label' => 'mvk_doc_be_form_contact_label_contactme',
'required' => false,
'expanded' => true,
'multiple' => true,
'choices' => [
'mvk_doc_be_form_contact_label_contactme_phone' => 'phone',
'mvk_doc_be_form_contact_label_contactme_mail' => 'email'
]
]);
if(isset($options['newsletterElements']))
$builder->add('newsletterselect', ChoiceType::class, [
'label' => 'mvk_doc_be_form_contact_label_newsletterselect',
'choices' => $newsletterselect,
'required' => true,
'multiple' => true,
'expanded' => true
]);
$builder->add('privacy', CheckboxType::class, [
'label' => 'mvk_doc_be_form_contact_label_privacy',
'value' => $data['trans']->trans('mvk_doc_be_form_partner_label_privacy_accepted_text'),
'required' => true,
'constraints' => array(
new NotBlank(array('message' => 'mvk_doc_be_form_contact_label_privacy_error')),
),
])
->add('submit', SubmitType::class, [
'label' => 'mvk_doc_be_form_contact_label_submit',
]);
}
public function getBlockPrefix()
{
return ''; // return an empty string here
}
}