src/Form/DemoRequestType.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\FormBuilderInterface;
  5. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  6. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  7. use Symfony\Component\Form\Extension\Core\Type\TextType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. class DemoRequestType extends AbstractType
  12. {
  13.     public function buildForm(FormBuilderInterface $builder, array $options): void
  14.     {
  15.         $builder
  16.             ->add('institution'TextType::class, [
  17.                 'label' => 'Institution',
  18.                 'constraints' => [
  19.                     new Assert\NotBlank(['message' => 'Please enter your institution name']),
  20.                     new Assert\Length(['max' => 180]),
  21.                 ],
  22.             ])
  23.             ->add('role'ChoiceType::class, [
  24.                 'label' => 'Role',
  25.                 'choices' => [
  26.                     'Executive Leadership' => 'Executive Leadership',
  27.                     'Finance' => 'Finance',
  28.                     'Institutional Research / Analytics' => 'Institutional Research / Analytics',
  29.                     'IT / Data' => 'IT / Data',
  30.                     'Enrollment / Admissions' => 'Enrollment / Admissions',
  31.                     'Other' => 'Other',
  32.                 ],
  33.                 'placeholder' => 'Select one',
  34.                 'constraints' => [
  35.                     new Assert\NotBlank(['message' => 'Please select your role']),
  36.                 ],
  37.             ])
  38.             ->add('name'TextType::class, [
  39.                 'label' => 'Name',
  40.                 'constraints' => [
  41.                     new Assert\NotBlank(['message' => 'Please enter your name']),
  42.                     new Assert\Length(['max' => 120]),
  43.                 ],
  44.             ])
  45.             ->add('email'EmailType::class, [
  46.                 'label' => 'Email',
  47.                 'constraints' => [
  48.                     new Assert\NotBlank(['message' => 'Please enter your email']),
  49.                     new Assert\Email(['message' => 'Please enter a valid email address']),
  50.                     new Assert\Length(['max' => 180]),
  51.                 ],
  52.             ])
  53.             ->add('phone'TextType::class, [
  54.                 'label' => 'Phone (optional)',
  55.                 'required' => false,
  56.                 'constraints' => [
  57.                     new Assert\Length(['max' => 40]),
  58.                 ],
  59.             ])
  60.             ->add('message'TextareaType::class, [
  61.                 'label' => 'What would you like to see in the demo?',
  62.                 'attr' => ['rows' => 6],
  63.                 'required' => false,
  64.                 'constraints' => [
  65.                     new Assert\Length(['max' => 4000]),
  66.                 ],
  67.             ]);
  68.     }
  69.     public function configureOptions(OptionsResolver $resolver): void
  70.     {
  71.         $resolver->setDefaults([
  72.             'csrf_protection' => true,
  73.         ]);
  74.     }
  75. }