<?php
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotBlank;
class EmailType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', TextType::class, [
'label' => 'Email',
'attr' => [
'placeholder' => 'your.email@address.com',
'class' => 'form-control',
],
'error_bubbling' => true,
'mapped' => false,
'constraints' => [
new Email(['message' => 'This is not a valid email address.']),
new NotBlank(),
],
])
->add('companyName', TextType::class, [
'label' => 'Company Name',
'attr' => [
'placeholder' => 'Acme Ltd',
'class' => 'form-control',
],
'error_bubbling' => true,
'mapped' => false,
])
->add('firstName', TextType::class, [
'label' => 'First name',
'attr' => [
'placeholder' => 'Joe',
'class' => 'form-control',
],
'error_bubbling' => true,
'mapped' => false,
'constraints' => [
new NotBlank(),
],
])
->add('lastName', TextType::class, [
'label' => 'Last name',
'attr' => [
'placeholder' => 'Bloggs',
'class' => 'form-control',
],
'error_bubbling' => true,
'mapped' => false,
'constraints' => [
new NotBlank(),
],
])
->add('requirement', ChoiceType::class, [
'label' => 'What would you like to talk about',
'placeholder' => 'Choose an option',
'attr' => [
'placeholder' => 'Re: ',
'class' => 'form-control',
],
'choices' => $options['requirement_choices'],
'expanded' => false,
'multiple' => false
])
->add('body', TextareaType::class, [
'label' => 'Message',
'attr' => [
'placeholder' => 'Hello,',
'class' => 'form-control',
'rows' => 5,
],
'error_bubbling' => true,
'mapped' => false,
'constraints' => [
new NotBlank(['message' => 'An email isn\'t an email without a Message. ']),
],
])
->add('Send', SubmitType::class, [
'attr' => [
'class' => 'hidden',
'id' => 'email_submit'
],
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'cascade_validation' => true,
'requirement_choices' => [],
]);
}
public function getName()
{
return 'email';
}
}