PHPackages                             edouardkombo/multi-step-forms-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. edouardkombo/multi-step-forms-bundle

ActiveBundle[Framework](/categories/framework)

edouardkombo/multi-step-forms-bundle
====================================

Easily manage Symfony2 forms with multiple steps logic.

124PHP

Since Jul 15Pushed 11y ago2 watchersCompare

[ Source](https://github.com/edouardkombo/MultiStepFormsBundle)[ Packagist](https://packagist.org/packages/edouardkombo/multi-step-forms-bundle)[ RSS](/packages/edouardkombo-multi-step-forms-bundle/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

MultiStep Forms Bundle
======================

[](#multistep-forms-bundle)

About
-----

[](#about)

This bundle functionality is to help you manage multiple steps forms in a single controller with a single view. This bundle has been made for Symfony &gt; 2.5.

Requirements
------------

[](#requirements)

Require PHP version 5.3 or greater.

Installation
------------

[](#installation)

Register the bundle in your composer.json

```
{
    "require": {
        "edouardkombo/multi-step-forms-bundle": "dev-master"
    }
}

```

Now, install the vendor

```
php composer.phar install

```

Register MultiStepFormsBundle namespace in your app/appKernel.php

```
new EdouardKombo\MultiStepFormsBundle\EdouardKomboMultiStepFormsBundle(),

```

Add MultiStepFormsBundle routes in your app/config/routing.yml, we will see further how to customize routes

```
edouard_kombo_multi_step_forms:
resource: "@EdouardKomboMultiStepFormsBundle/Resources/config/routing.yml"
prefix:   /{_locale}/registration/step

```

Now, add the config parameters inside your app/config/config.yml. The default configs are designed for a multistep registration form, but you can easily extend them to any kind of forms you want.

```
edouard_kombo_multi_step_forms:
    multistep_forms:
        #Create your own param here, name it how you want, (user_registration) is just for demo
        user_registration:

            #Mandatory: Main entity where to save your forms datas
            entity_namespace: 'your_form_entity_namespace'

            #Mandatory: Form types in order of execution
            forms_order: ['namespace_of_first_form', 'namespace_of_second_form', 'namespace_of_third_form']

            #Mandatory: The three below form types will be redirected to a single action controller that will save datas
            #Of course, you can customize the way you want by overriding
            actions_order: ['edouard_kombo_multi_step_forms_create', 'edouard_kombo_multi_step_forms_create', 'edouard_kombo_multi_step_forms_create']

            #Mandatory: Each form will be render in a single view template specified in "indexAction", in the main controller
            #The last parameter is the route to be redirected to when the process is finished
            redirect_order: ['edouard_kombo_multi_step_forms_show', 'edouard_kombo_multi_step_forms_show', 'edouard_kombo_multi_step_forms_show', 'frontend_payment_choice']

            #Mandatory: This option is mandatory for routes
            allowed_roles: ['ROLE_USER', 'ROLE_MANAGER']

            #Optional: Form entity that will trigger authentication in case of user registration form
            authentication_trigger: 'form_type_namespace_that_triggers_authentication'

            #Optional: Your specified firewall (in security.yml), in case of user registration form
            authentication_firewall: 'main'

            #Optional: Where Doctrine will find the user, just after subsscription, for authentication
            authentication_entity_provider: 'VendorNameBundle:Entity'

            #Optional: Your mailer service, in case of user registration form
            #If not specified, no mail will be sent to user
            #authentication_mailer_service: 'your_mailer_servce'

```

Documentation
-------------

[](#documentation)

All the magic of MultiStepFormsBundle is written in one controller, one listener and one helper. You will only need two routes inside the global route you defined.

Example: You want to setup a multistep registration form.

1. Create a "UserStepRegistrationController.php" controller in your userBundle and override the EdouardKombo\\MultiStepFormsBundle\\Controller\\MultiStepFormsController.php class with it. Make sure to target a single template view in your bundle.
2. Create a "LoginListener" in your userBundle and override the EdouardKombo\\MultiStepFormsBundle\\Listener\\LoginListener.php class with it.
3. Create a "MultiStepFormsHelper" in your userBundle and override the EdouardKombo\\MultiStepFormsBundle\\Helper\\MultiStepFormsHelper.php class with it.
4. Override your services and inject the correct parameter specified in app/config/config.yml, here "user registration".

    parameters: multistep\_forms.login\_listener.class: VendorName\\UserBundle\\Listener\\LoginListener multistep\_forms.controller.class: VendorName\\UserBundle\\Controller\\MultiStepFormsController multistep\_forms.helper.class: VendorName\\UserBundle\\Helper\\MultiStepFormsHelper

    services: multistep\_forms.helper: class: %multistep\_forms.helper.class% arguments: - %multistep\_forms.CONFIG\_PARAMETER% #Here it will be "user\_registration" - @security.context - @service\_container

    ```
     multistep_forms.login_listener:
         class: %multistep_forms.login_listener.class%
         arguments:
             - @doctrine.orm.entity_manager
             - @service_container
             - @security.context

     multistep_forms.controller:
         class: %multistep_forms.controller.class%

    ```
5. Define your routes. Only two routes are needed, show and create. Routes have this format: /show/{user\_role}/{step}

    - {user\_role}: is the role you want the user to be registered (it has no incidence for other forms but is mandatory).
    - {step}: current step, depending on the configurations

Define your global route in app/config/routing.yml

```
frontend_multistep_registration:
    resource: "@VendorUserBundle/Resources/config/routing/multistep_registration.xml"
    prefix:   /{_locale}/registration/step

```

In your multistep\_registration.xml

```

    VendorUserBundle:UserStepRegistration:index
    manager
    \d+
    [a-zA-Z]+

    VendorUserBundle:UserStepRegistration:save
    manager
    POST
    \d+
    [a-zA-Z]+

```

6. Change the bundle configs in app/config/congif.yml and that's ok, you're ready to go.

Contributing
------------

[](#contributing)

If you want to help me improve this bundle, please make sure it conforms to the PSR coding standard. The easiest way to contribute is to work on a checkout of the repository, or your own fork, rather than an installed version.

Issues
------

[](#issues)

Bug reports and feature requests can be submitted on the [Github issues tracker](https://github.com/edouardkombo/MultiStepFormsBundle/issues).

For further informations, contact me directly at .

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/aadb7e8f4da66da9399b9ee24b275e520707a61db7b75570aeaebf2084d9b236?d=identicon)[edouardkombo](/maintainers/edouardkombo)

---

Top Contributors

[![edouardkombo](https://avatars.githubusercontent.com/u/4246149?v=4)](https://github.com/edouardkombo "edouardkombo (1 commits)")

### Embed Badge

![Health badge](/badges/edouardkombo-multi-step-forms-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/edouardkombo-multi-step-forms-bundle/health.svg)](https://phpackages.com/packages/edouardkombo-multi-step-forms-bundle)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
