PHPackages                             heimrichhannot/contao-multi-step-registration - 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. heimrichhannot/contao-multi-step-registration

ActiveContao-bundle

heimrichhannot/contao-multi-step-registration
=============================================

Multi-step member registration content element for Contao.

05PHP

Since Jul 1Pushed 2mo agoCompare

[ Source](https://github.com/heimrichhannot/contao-multi-step-registration)[ Packagist](https://packagist.org/packages/heimrichhannot/contao-multi-step-registration)[ RSS](/packages/heimrichhannot-contao-multi-step-registration/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Contao Multi-Step Registration
==============================

[](#contao-multi-step-registration)

Reusable Contao 5.7 extension that provides a configurable multi-step frontend registration content element for `tl_member`.

[![Backend View](docs/img/screenshot_backend.png)](docs/img/screenshot_backend.png)

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

[](#requirements)

- PHP 8.4
- Contao 5.7
- `codefog/tags-bundle` 3.4 or newer for the sortable backend field selector

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

[](#installation)

Install the bundle with Composer or contao manager:

```
composer require heimrichhannot/contao-multi-step-registration
```

Update the database afterward.

Configuration
-------------

[](#configuration)

Create a content element of type `huh_multi_step_registration` and configure the registration steps in the `msrSteps` row wizard.

Each step contains a key, a backend label and the member fields for that step. The member field selector uses Codefog's `cfgTags` widget with sorting enabled, so editors can drag selected fields into the exact frontend order. New tags are disabled; the available values are generated from `tl_member` fields with `eval.feEditable`, matching Contao's registration field eligibility.

Twig Template
-------------

[](#twig-template)

You can customize the frontend output creating a variant template of `content_element/multi_step_registration`

An optional Symfony UX Turbo variant is available as `content_element/multi_step_registration/ux-turbo`. Use it only in host projects that install and load `symfony/ux-turbo`. It wraps the content element in a Turbo frame, submits intermediate steps asynchronously and keeps final registration redirects as full-page navigations.

Runtime Behavior
----------------

[](#runtime-behavior)

The frontend form is implemented as a Symfony form flow:

- `MemberRegistrationFlowType` builds one flow step per configured row.
- `MemberRegistrationStepType` maps the selected `tl_member` fields into Symfony form fields.
- `NavigatorFlowType` renders previous, next and finish controls.
- Flow state is stored in the session with a content-element-specific key.
- The root form uses Contao CSRF options, so the hidden token field is `REQUEST_TOKEN` and validation uses `contao.csrf.token_manager`.
- Successful step submissions use POST/Redirect/GET with HTTP 303 responses. Invalid submissions render the current form with HTTP 422 so Turbo can replace the frame with validation errors.

Member fields are derived from DCA configuration. The mapper handles labels, help texts, mandatory fields, length constraints, selected `rgxp` rules, unique checks, multiple values, DCA options and compatible save callbacks.

On final submission the bundle creates the member and mirrors core registration behavior where applicable:

- password hashing,
- duplicate cleanup for expired registrations,
- activation token and activation mail handling,
- admin notification,
- home directory assignment,
- `createNewUser` and `activateAccount` hooks,
- version creation,
- configured redirects or inline success messages.

Notes
-----

[](#notes)

This extension was largely built with AI, but reviewed and tested by a human. :)

###  Health Score

20

—

LowBetter than 12% of packages

Maintenance58

Moderate activity, may be stable

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 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/28ad3224d8727b622ebd229840eea6b9dbcb83eb0bd609e6ce65b614830ff538?d=identicon)[digitales@heimrich-hannot.de](/maintainers/digitales@heimrich-hannot.de)

---

Top Contributors

[![koertho](https://avatars.githubusercontent.com/u/12064642?v=4)](https://github.com/koertho "koertho (10 commits)")

### Embed Badge

![Health badge](/badges/heimrichhannot-contao-multi-step-registration/health.svg)

```
[![Health](https://phpackages.com/badges/heimrichhannot-contao-multi-step-registration/health.svg)](https://phpackages.com/packages/heimrichhannot-contao-multi-step-registration)
```

PHPackages © 2026

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