<?php
namespace App\Form;
use Pimcore\Localization\LocaleService;
use Pimcore\Translation\Translator;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Validator\Constraints\Type;
use Symfony\Component\Validator\Constraints\IsTrue;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Choice;
class ContactFormType extends AbstractType {
protected $locale;
protected $translator;
public function __construct(LocaleService $locale, Translator $translator) {
$this->locale = $locale;
$this->translator = $translator;
}
// forn name
/* public function getBlockPrefix() {
return 'contact_form';
} */
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
// ----------------------------------
// FIELDS
// ----------------------------------
// gender
/* ->add('gender', ChoiceType::class, [
'label' => ' ',
'label_attr' => [
'class' => 'radio-label'
],
'required' => true,
'expanded' => true,
'multiple' => false,
'choices' => [
'form.contact.gender.male' => 'male',
'form.contact.gender.female' => 'female'
],
'error_bubbling' => true,
'constraints' => [
new Choice([
'message' => $this->translator->trans('form.contact.gender.badchoice'),
'choices' => [
'male',
'female'
]
]),
new NotBlank(['message' => $this->translator->trans('form.contact.gender.blank')])
]
]) */
// firstname
->add('firstname', TextType::class, [
'label' => 'form.contact.firstname',
'label_attr' => [
'class' => 'form-input-label',
'data-input' => 'contact_form_firstname'
],
'attr' => [
'placeholder' => '', //'form.contact.firstname',
'class' => 'form-input'
],
'required' => true,
'error_bubbling' => true,
'constraints' => [
new NotBlank(['message' => $this->translator->trans('form.contact.firstname.blank')])
]
])
// lastname
->add('lastname', TextType::class, [
'label' => 'form.contact.lastname',
'label_attr' => [
'class' => 'form-input-label',
'data-input' => 'contact_form_lastname'
],
'attr' => [
'placeholder' => '', //'form.contact.lastname',
'class' => 'form-input'
],
'required' => true,
'error_bubbling' => true,
'constraints' => [
new NotBlank(['message' => $this->translator->trans('form.contact.lastname.blank')])
]
])
// phone
->add('phone', TextType::class, [
'label' => 'form.contact.phone',
'label_attr' => [
'class' => 'form-input-label',
'data-input' => 'contact_form_phone'
],
'attr' => [
'placeholder' => '', //'form.contact.phone',
'class' => 'form-input'
],
'required' => true,
'error_bubbling' => true,
'constraints' => [
new NotBlank(['message' => $this->translator->trans('form.contact.phone.blank')])
]
])
// email
->add('email', EmailType::class, [
'label' => 'form.contact.email',
'label_attr' => [
'class' => 'form-input-label',
'data-input' => 'contact_form_email'
],
'attr' => [
'placeholder' => '', //'form.contact.email',
'class' => 'form-input'
],
'required' => true,
'error_bubbling' => true,
'constraints' => [
new NotBlank(['message' => $this->translator->trans('form.contact.email.blank')]),
new Email(['message' => $this->translator->trans('form.contact.email.notvalid')])
]
])
// message
->add('message', TextareaType::class, [
'label' => 'form.contact.message',
'label_attr' => [
'class' => 'form-textarea-label',
'data-input' => 'contact_form_message'
],
'attr' => [
'placeholder' => '', //'form.contact.message',
'class' => 'form-textarea',
//'rows' => '7'
],
'required' => true,
'error_bubbling' => true,
'constraints' => [
new NotBlank(['message' => $this->translator->trans('form.contact.message.blank')])
]
])
// agreement
->add('agreement', CheckboxType::class, [
'label' => 'form.contact.agreement',
'label_attr' => [
'class' => 'form-checkbox'
],
'required' => true,
'error_bubbling' => true,
'constraints' => [
new IsTrue(['message' => $this->translator->trans('form.contact.agreement.nottrue')])
]
])
// ----------------------------------
// HIDDEN
// ----------------------------------
// hidden
->add('hidden', HiddenType::class, [
'required' => false
])
// js filled
->add('filled', HiddenType::class, [
'required' => false
])
// ----------------------------------
// SUBMIT
// ----------------------------------
// submit button
->add('submit', SubmitType::class, [
'label' => 'form.contact.submit',
'attr' => [
//'class' => 'button'
]
])
;
}
}