PHPackages                             terminal42/contao-mp\_forms - 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. terminal42/contao-mp\_forms

ActiveContao-bundle

terminal42/contao-mp\_forms
===========================

An extension for Contao Open Source CMS to create multi steps forms using the form generator

5.3.0(2mo ago)2633.7k↓30.8%17[4 issues](https://github.com/terminal42/contao-mp_forms/issues)[1 PRs](https://github.com/terminal42/contao-mp_forms/pulls)4LGPL-3.0+PHPPHP ^8.1CI passing

Since Feb 4Pushed 2mo ago11 watchersCompare

[ Source](https://github.com/terminal42/contao-mp_forms)[ Packagist](https://packagist.org/packages/terminal42/contao-mp_forms)[ GitHub Sponsors](https://github.com/terminal42)[ Fund](https://ko-fi.com/terminal42)[ RSS](/packages/terminal42-contao-mp-forms/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (16)Versions (53)Used By (4)

mp\_forms
=========

[](#mp_forms)

This is a Contao extension that allows you to create real forms over multiple pages.

After installing the module, you have a new setting in the form definitions where you can define the GET parameter you want the extension to work with. By default, this is `step` so it will generate `step=1`, `step=2` etc. in the URL. If, for whatever reason `step` is already in use on your webpage, you can change the settings there.

Moreover, you'll get a new form field called `Page break`. Every time you use this form field, the module will insert a page break in the form.

`mp_forms` validates if a user manually wants to go to step 3 and did not fill in step 1 or 2. I this case the user will be redirected to step 1 (obviously, only if you had required fields on step 1).

In case you don't want your users to be redirected but prefer to have some Ajax magic, you may combine this extension with our [ajaxform](https://github.com/terminal42/contao-ajaxform) one. They work perfectly well together!

⚠️ **You may not use the regular submit form field element**:

> Note that you must not be using a regular submit form field but use the `Page break` again. Otherwise, you won't have any `back` button displayed. `mp_forms` will automatically detect the last `Page break` as behaving like the form submit. If you use the regular submit form field anywhere in your form, `mp_forms` is completely disabled and you won't have any steps!

The `Summary` element
---------------------

[](#the-summary-element)

A typical use case of forms that are split into multiple steps is to summarize data that was previously entered. This might be on the final step before the data is submitted but it can also happen in between. You can use this special form field type to display the data. Accessing the data can be done via the "Simple Token" technology that is typical for Contao. All the form fields of previous steps are passed on using the `##form_*##` notation. You may also access the labels using `##formlabel_*##`.

Files are handled a bit differently because there is more than just one value to a file. You may use `extension`, `size`, `mime` as well as a `download_url` which is generated for you. To make things simple, the default token for the file (e.g. if the form field was named `upload` that would be `##file_upload##`) contains the HTML rendered using the `ce_download` template.

A simple summary for all the submitted fields, encapsulated in simple `` elements can be displayed using the `##mp_forms_summary##` token.

Because trying things out yourself is usually easier and so you don't have to remember all the tokens that can be used, you may simply place the `##mp_forms_debug##` token which will show you all the available tokens with their content.

Frontend module to display a step navigation
--------------------------------------------

[](#frontend-module-to-display-a-step-navigation)

This module ships with a front end module that allows you to easily build a front end navigation for each of your steps. Not styled at all, it might look something like this in the end:

[![Example for step navigation](docs/navigation_example.png)](docs/navigation_example.png)

Note that by default steps will just be named `Step x` in every language. The `Page break` form field label field will be used for the navigation if you provide it.

Insert tags
-----------

[](#insert-tags)

There are insert tags you can use to fetch information about the state of the form:

Insert tagDescriptionExample`{{mp_forms::::step::current}}`Contains the current step you are on2`{{mp_forms::::step::total}}`Contains the total steps of your form5`{{mp_forms::::step::percentage}}`Contains the percentage of your progress20`{{mp_forms::::step::numbers}}`Contains a classic `x of y` display`2 / 5``{{mp_forms::::step::label}}`Contains the label of the current step`Step 1``{{mp_forms::::field_value::}}`Contains the submitted value of a previous fieldNote that they can be especially useful together with a `Custom HTML` front end module. Let's assume you want to display a progress bar for form ID `5`:

```

    {{mp_forms::5::step::numbers}}

```
```

###  Health Score

63

—

FairBetter than 99% of packages

Maintenance85

Actively maintained with recent releases

Popularity40

Moderate usage in the ecosystem

Community31

Small or concentrated contributor base

Maturity85

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 81.8% 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.

###  Release Activity

Cadence

Every ~81 days

Recently: every ~166 days

Total

51

Last Release

60d ago

Major Versions

2.0.4 → 3.0.0-rc12016-08-05

3.0.10 → 4.0.0-rc12020-03-11

4.4.0 → 5.0.02023-01-13

PHP version history (5 changes)2.0.0PHP &gt;=5.3.2

3.0.0-rc1PHP &gt;=5.4

4.0.0-rc1PHP ^7.1

4.3.0PHP ^7.1 || ^8.0

5.0.0PHP ^8.1

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/481937?v=4)[Yanick Witschi](/maintainers/Toflar)[@Toflar](https://github.com/Toflar)

---

Top Contributors

[![Toflar](https://avatars.githubusercontent.com/u/481937?v=4)](https://github.com/Toflar "Toflar (157 commits)")[![qzminski](https://avatars.githubusercontent.com/u/193483?v=4)](https://github.com/qzminski "qzminski (10 commits)")[![Red-nothing](https://avatars.githubusercontent.com/u/1442731?v=4)](https://github.com/Red-nothing "Red-nothing (8 commits)")[![m-vo](https://avatars.githubusercontent.com/u/5305677?v=4)](https://github.com/m-vo "m-vo (4 commits)")[![taca](https://avatars.githubusercontent.com/u/384611?v=4)](https://github.com/taca "taca (3 commits)")[![zonky2](https://avatars.githubusercontent.com/u/1045318?v=4)](https://github.com/zonky2 "zonky2 (2 commits)")[![markocupic](https://avatars.githubusercontent.com/u/1525166?v=4)](https://github.com/markocupic "markocupic (1 commits)")[![MarkejN](https://avatars.githubusercontent.com/u/38976632?v=4)](https://github.com/MarkejN "MarkejN (1 commits)")[![fritzmg](https://avatars.githubusercontent.com/u/4970961?v=4)](https://github.com/fritzmg "fritzmg (1 commits)")[![contaoacademy](https://avatars.githubusercontent.com/u/23719181?v=4)](https://github.com/contaoacademy "contaoacademy (1 commits)")[![timlg07](https://avatars.githubusercontent.com/u/33633786?v=4)](https://github.com/timlg07 "timlg07 (1 commits)")[![cgoIT](https://avatars.githubusercontent.com/u/8972203?v=4)](https://github.com/cgoIT "cgoIT (1 commits)")[![wiphi](https://avatars.githubusercontent.com/u/25878910?v=4)](https://github.com/wiphi "wiphi (1 commits)")[![aschempp](https://avatars.githubusercontent.com/u/1073273?v=4)](https://github.com/aschempp "aschempp (1 commits)")

---

Tags

contaomultiFormsstepmultipage

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/terminal42-contao-mp-forms/health.svg)

```
[![Health](https://phpackages.com/badges/terminal42-contao-mp-forms/health.svg)](https://phpackages.com/packages/terminal42-contao-mp-forms)
```

###  Alternatives

[codefog/contao-haste

haste extension for Contao Open Source CMS

42650.8k139](/packages/codefog-contao-haste)[terminal42/notification_center

Notification Center extension for Contao Open Source CMS

68396.6k78](/packages/terminal42-notification-center)[isotope/isotope-core

Isotope is the premier open source eCommerce solution for Contao Open Source CMS

13959.2k74](/packages/isotope-isotope-core)[codefog/contao-news_categories

News Categories bundle for Contao Open Source CMS

3183.3k6](/packages/codefog-contao-news-categories)[terminal42/contao-node

Node bundle for Contao Open Source CMS

3172.5k4](/packages/terminal42-contao-node)[terminal42/dcawizard

dcaWizard extension for Contao Open Source CMS

10370.7k15](/packages/terminal42-dcawizard)

PHPackages © 2026

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