src/Form/Type/EmailType.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Form\Type;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  5. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  6. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  7. use Symfony\Component\Form\Extension\Core\Type\TextType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Validator\Constraints\Email;
  11. use Symfony\Component\Validator\Constraints\NotBlank;
  12. class EmailType extends AbstractType
  13. {
  14.     public function buildForm(FormBuilderInterface $builder, array $options)
  15.     {
  16.         $builder
  17.             ->add('email'TextType::class, [
  18.                 'label' => 'Email',
  19.                 'attr' => [
  20.                     'placeholder' => 'your.email@address.com',
  21.                     'class' => 'form-control',
  22.                 ],
  23.                 'error_bubbling' => true,
  24.                 'mapped' => false,
  25.                 'constraints' => [
  26.                     new Email(['message' => 'This is not a valid email address.']),
  27.                     new NotBlank(),
  28.                 ],
  29.             ])
  30.             ->add('companyName'TextType::class, [
  31.                 'label' => 'Company Name',
  32.                 'attr' => [
  33.                     'placeholder' => 'Acme Ltd',
  34.                     'class' => 'form-control',
  35.                 ],
  36.                 'error_bubbling' => true,
  37.                 'mapped' => false,
  38.             ])
  39.             ->add('firstName'TextType::class, [
  40.                 'label' => 'First name',
  41.                 'attr' => [
  42.                     'placeholder' => 'Joe',
  43.                     'class' => 'form-control',
  44.                 ],
  45.                 'error_bubbling' => true,
  46.                 'mapped' => false,
  47.                 'constraints' => [
  48.                     new NotBlank(),
  49.                 ],
  50.             ])
  51.             ->add('lastName'TextType::class, [
  52.                 'label' => 'Last name',
  53.                 'attr' => [
  54.                     'placeholder' => 'Bloggs',
  55.                     'class' => 'form-control',
  56.                 ],
  57.                 'error_bubbling' => true,
  58.                 'mapped' => false,
  59.                 'constraints' => [
  60.                     new NotBlank(),
  61.                 ],
  62.             ])
  63.             ->add('requirement'ChoiceType::class, [
  64.                 'label' => 'What would you like to talk about',
  65.                 'placeholder' => 'Choose an option',
  66.                 'attr' => [
  67.                     'placeholder' => 'Re: ',
  68.                     'class' => 'form-control',
  69.                 ],
  70.                 'choices' => $options['requirement_choices'],
  71.                 'expanded' => false,
  72.                 'multiple' => false
  73.             ])
  74.             ->add('body'TextareaType::class, [
  75.                 'label' => 'Message',
  76.                 'attr' => [
  77.                     'placeholder' => 'Hello,',
  78.                     'class' => 'form-control',
  79.                     'rows' => 5,
  80.                 ],
  81.                 'error_bubbling' => true,
  82.                 'mapped' => false,
  83.                 'constraints' => [
  84.                     new NotBlank(['message' => 'An email isn\'t an email without a Message. ']),
  85.                 ],
  86.             ])
  87.             ->add('Send'SubmitType::class, [
  88.                 'attr' => [
  89.                     'class' => 'hidden',
  90.                     'id' => 'email_submit'
  91.                 ],
  92.             ]);
  93.     }
  94.     public function configureOptions(OptionsResolver $resolver)
  95.     {
  96.         $resolver->setDefaults([
  97.             'cascade_validation' => true,
  98.             'requirement_choices' => [],
  99.         ]);
  100.     }
  101.     public function getName()
  102.     {
  103.         return 'email';
  104.     }
  105. }