Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

This module provides a framework for creating multistep forms in Drupal 8.x. While similar notable projects exist on Drupal.org, the goal of this project is to simplify the process of creating multistep forms for developers while maximizing flexibility in configuration. The module doesn't provide any kind of UI, it's created only for developers.

Module provides Yaml plugin system like *links.action.yml, where you can specify each step, and also replace/extend plugin itself. The benefits of such approach are:

  • One place to configure everything
  • You can specify whatever namespace you want for steps, which is good if you have a few multistep forms in one module because you will be able to sort them logically

Usage

1. Create your form, and extend it with \Drupal\multistep_form_framework\Form\MultistepForm class. The only required thing is to set form id ::getFormId, which later will be used to identify plugin.
2. Add MODULE_NAME.multistep_wizard.yml file to your module.
Example:

your_form_id_here:
  steps:
    -
      id: greetings
      class: \Drupal\multistep_form_framework_examples\Form\BuyBookStep\Greetings
    -
      id: book_attributes
      class: \Drupal\multistep_form_framework_examples\Form\BuyBookStep\BookAttributes
    -
      id: description
      class: \Drupal\multistep_form_framework_examples\Form\BuyBookStep\Description
    -
      id: graz
      class: \Drupal\multistep_form_framework_examples\Form\BuyBookStep\Congratulation

How does this module differ from other community projects and examples?

The Webform allows building multi-step, wizard-style forms and provides a decent UI. If you don't need to deal with non-trivial tasks like multiple entities generation or some insane widgets then I encourage you to use Webform instead of this module.

Multi Step Form Example provides a intuitive demonstration of creating multistep forms. This framework differs in that it eliminates the need for a StepManager class and allows for iterations to jump arbitrarily to any step, even based upon custom logic of the previous submit.

πŸ‡ΊπŸ‡¦

This module is maintained by Ukrainian developers.
Please consider supporting Ukraine in a fight for their freedom and safety of Europe.

Activity

Total releases
2
First release
Nov 2025
Latest release
3 months ago
Release cadence
65 days
Stability
50% stable

Releases

Version Type Release date
2.x-dev Dev Jan 9, 2026
2.0.0 Stable Nov 5, 2025