I’m new to symfony and want to to create a simple contact form, take the submitted values and send them as an Email. I don’t want to save anything in the database.
I followed the documentation on this page: https://symfony.com/doc/current/form/without_class.html
I created a new page/action with the code from the page above:
/** * @Route("/contact", name="page_contact") */ public function contact(Request $request) { $defaultData = ['message' => 'Type your message here']; $form = $this->createFormBuilder($defaultData) ->add('name', TextType::class) ->add('email', EmailType::class) ->add('message', TextareaType::class) ->add('send', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { // data is an array with "name", "email", and "message" keys $data = $form->getData(); } return $this->render('Shop/contact.html.twig', [ 'form' => $form ]); }
But this gives me an error:
SymfonyComponentFormExceptionInvalidArgumentException: Could not load type "DoctrineDBALTypesTextType": class does not implement "SymfonyComponentFormFormTypeInterface". at vendor/symfony/form/FormRegistry.php:89 at SymfonyComponentFormFormRegistry->getType('Doctrine\DBAL\Types\TextType') (vendor/symfony/form/FormFactory.php:74) at SymfonyComponentFormFormFactory->createNamedBuilder('name', 'Doctrine\DBAL\Types\TextType', null, array()) (vendor/symfony/form/FormBuilder.php:97) at SymfonyComponentFormFormBuilder->create('name', 'Doctrine\DBAL\Types\TextType', array()) (vendor/symfony/form/FormBuilder.php:256) at SymfonyComponentFormFormBuilder->resolveChildren() (vendor/symfony/form/FormBuilder.php:206) at SymfonyComponentFormFormBuilder->getForm() (src/Controller/ShopController.php:68) at AppControllerShopController->contact(object(Request)) (vendor/symfony/http-kernel/HttpKernel.php:149) at SymfonyComponentHttpKernelHttpKernel->handleRaw(object(Request), 1) (vendor/symfony/http-kernel/HttpKernel.php:66) at SymfonyComponentHttpKernelHttpKernel->handle(object(Request), 1, true) (vendor/symfony/http-kernel/Kernel.php:190) at SymfonyComponentHttpKernelKernel->handle(object(Request)) (public/index.php:37)
What am I doing wrong? Why is there all the Doctrine
stuff in the Stack Trace?
Advertisement
Answer
You probably imported the wrong type. Instead of:
use DoctrineDBALTypesTextType;
you need:
use SymfonyComponentFormExtensionCoreTypeTextType;