Symfony 7.4 : multi-step forms, des formulaires plus efficaces

Par:
francoistonic

mar, 04/11/2025 - 07:56

Parmi les nouveautés de Symfony 7.4, une des plus importantes est le multi-step forms. Forms permet de créer des formulaires complexes avec des dizaines de champs, une validation multiple, des événements pour des actions dynamiques, etc. Inconvénient  on crée alors des formulaires monolithique et parfois trop long. L'éditeur propose maintenant le multi-step, ou multi-étape. Pour les formulaires les plus complexes, vous pouvez les diviser en plusieurs étapes. En quelque sorte, vous créez des sous-formulaires (étape 1, étape 2, etc.). 

Cette approche doit permettre une meilleure UX pour les utilisateurs, créer des véritables flux de formulaires pour souples. Ce nouveau flux fonctionne comme des formulaires. 

Cette exemple illustre bien ce concept : 

use Symfony\Component\Form\Flow\AbstractFlowType;
class UserSignUpType extends AbstractFlowType
{
    public function buildFormFlow(FormFlowBuilderInterface $builder, array $options): void
    {
        $builder->addStep('personal', UserSignUpPersonalType::class);
        $builder->addStep('professional', UserSignUpProfessionalType::class);
        $builder->addStep('account', UserSignUpAccountType::class);
        $builder->add('navigator', NavigatorFlowType::class);
    }
    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => UserSignUp::class,
            // `$currentStep` is a property defined in the UserSignUp class
            'step_property_path' => 'currentStep',
        ]);
    }
}
La fonction buildFormFlow permet de dire que l'on crée un multi-steps forms : 3 : personal, professional et account. addStep permet d'ajouter une étape. Chaque étape est un formulaire Symfony. 
Une petite vidéo de mise en oeuvre :