8000 Validation groups and form without entity · Issue #31990 · symfony/symfony · GitHub
[go: up one dir, main page]

Skip to content
Validation groups and form without entity #31990
Closed
@MPierre68

Description

@MPierre68

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0