Closed
Description
Symfony version(s) affected: 3.4.24 to 3.4.28
Hello, I'm working with form without underling entity and I need to use validation groups.
So i use this doc https://symfony.com/doc/3.4/validation/raw_values.html to affect validation to differents fields
Unfortunatly, only the first group specifed is used by the validator. The others are ignored.
Here is a form type :
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class DemoType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('field1', TextType::class, [
'required' => false,
])
->add('field2', TextType::class, [
'required' => false,
])
->add('field3', TextType::class, [
'required' => false,
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'validation_groups' => ['field1', 'field2', 'field3']
]);
}
}
And there a controller :
namespace App\Controller;
use App\Form\DemoType;
use App\Form\Demo2Type;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Constraints as Assert;
class DemoController extends Controller
{
/**
* @Route("/", name="demo")
*/
public function index(Request $request)
{
$contraintes = new Assert\Collection([
'field1' => new Assert\NotBlank([
'groups' => ['field1']
]),
'field2' => new Assert\NotBlank([
'groups' => ['field2']
]),
'field3' => new Assert\NotBlank([
'groups' => ['field3']
]),
]);
$form = $this->createForm(DemoType::class, null, ['constraints' => $contraintes]);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$this->get('session')->getFlashBag()->add('success', 'Formulaire soumis avec succès.');
} else {
$this->get('session')->getFlashBag()->add('error', 'Les données saisies sont invalides.');
}
}
return $this->render('demo/index.html.twig', [
'controller_name' => 'DemoController',
'form' => $form->createView(),
]);
}
}
to reproduce the issue.