@darrion.kuhn
To use the Symfony Validator Bundle to validate forms, you can follow these steps:
- Install the Validator Bundle:composer require symfony/validator
- Create a form class with the desired fields and validation rules:use SymfonyComponentFormAbstractType;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentValidatorConstraintsNotBlank;
use SymfonyComponentValidatorConstraintsLength;
class ContactFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [
'constraints' => [
new NotBlank(),
new Length(['min' => 2, 'max' => 255])
]
])
->add('email', TextType::class, [
'constraints' => [
new NotBlank(),
new Email()
]
])
->add('message', TextType::class, [
'constraints' => [
new NotBlank(),
new Length(['min' => 10, 'max' => 1000])
]
]);
}
}
- In your controller, create an instance of the form and handle its submission:use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
class ContactController extends AbstractController
{
/**
* @Route("/contact", name="contact")
*/
public function contact(Request $request)
{
$form = $this->createForm(ContactFormType::class)
->add('submit', SubmitType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Do something with the form data
}
return $this->render('contact.html.twig', [
'form' => $form->createView()
]);
}
}
- In your template, render the form with its fields and validation errors:{{ form_start(form) }}
{{ form_row(form.name) }}
{{ form_row(form.email) }}
{{ form_row(form.message) }}
{{ form_row(form.submit) }}
{{ form_end(form) }}
{% if form.errors|length > 0 %}
<ul>
{% for error in form.errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
{% endif %}
That's it! Now the form will be validated automatically based on the rules defined in the form class, and any validation errors will be displayed in the template.