PHPackages                             yiggle/form-wizard-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. yiggle/form-wizard-bundle

ActiveSymfony-bundle

yiggle/form-wizard-bundle
=========================

Sulu 3 Form Wizard

v0.3.6(1mo ago)066↓100%MITPHPPHP ^8.4CI passing

Since Mar 5Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/Predjee/form-wizard-bundle)[ Packagist](https://packagist.org/packages/yiggle/form-wizard-bundle)[ RSS](/packages/yiggle-form-wizard-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (28)Versions (13)Used By (0)

Yiggle Form Wizard Bundle
=========================

[](#yiggle-form-wizard-bundle)

[![CI](https://github.com/Predjee/form-wizard-bundle/actions/workflows/ci.yml/badge.svg)](https://github.com/Predjee/form-wizard-bundle/actions)[![Latest Version](https://camo.githubusercontent.com/92a205824b6287b4cbcf3a8a22d9d7e09b62d5be89d9580d3250894c0c5864f5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f796967676c652f666f726d2d77697a6172642d62756e646c652e737667)](https://packagist.org/packages/yiggle/form-wizard-bundle)[![Downloads](https://camo.githubusercontent.com/18a996e2e214cb98efef877fa1013cbf393ab1ca53d7a49b5c294d47de99badb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f796967676c652f666f726d2d77697a6172642d62756e646c652e737667)](https://packagist.org/packages/yiggle/form-wizard-bundle)[![License](https://camo.githubusercontent.com/03165dba3c1629f122fadd05100f11468a02c811e86d0ead3c7588d3eef8f34a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f507265646a65652f666f726d2d77697a6172642d62756e646c652e737667)](LICENSE)

Concept
-------

[](#concept)

The bundle implements a **content-driven form workflow engine**.

A wizard consists of:

```
Wizard → Steps → Fields → Submission

```

Optionally a wizard may include:

- Payment handling
- Notifications
- Export integrations

The runtime flow is powered by **Symfony Form Flow** while the configuration is managed via **Sulu Admin blocks**.

A **Sulu 3** bundle that provides a configurable **multi-step form wizard** with:

- **Sulu Admin** configuration (forms, steps, fields, receivers)
- Website rendering via a wizard controller + Symfony Forms
- Optional **payment provider integration** (e.g. Mollie)
- Email notifications (admin and customer)
- Export of submissions

> **Status: pre-1.0.** The public API is intended to be stable, but namespaces and extension points may still evolve.

---

Compatibility
-------------

[](#compatibility)

ComponentSupportedPHP8.4+Symfony7.4 / 8.xSulu3.xDoctrine ORM2.20+ / 3.x---

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

[](#installation)

### 1. Enable the Yiggle recipe repository

[](#1-enable-the-yiggle-recipe-repository)

The bundle ships its Symfony Flex recipes in a custom repository.

```
composer config --no-plugins --json extra.symfony.endpoint \
'["https://api.github.com/repos/Predjee/symfony-recipes/contents/index.json?ref=main","flex://defaults"]'
```

### 2. Install the bundle

[](#2-install-the-bundle)

```
composer require yiggle/form-wizard-bundle
```

The Flex recipe will automatically install:

- Routes
- Default configuration
- Post-install instructions

---

Database
--------

[](#database)

The bundle ships Doctrine entities and expects your project to manage migrations.

```
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
```

---

Sulu Admin Integration
----------------------

[](#sulu-admin-integration)

The bundle provides a Sulu admin module to manage:

- Wizards (forms)
- Steps
- Fields
- Email receivers
- Submissions export

Import the bundle's admin JavaScript in `assets/admin/app.js`:

```
import '@yiggle-form-wizard/admin/index.js';
```

Add the alias to your admin webpack config (`assets/admin/webpack.config.js`):

```
config.resolve.alias = {
    ...config.resolve.alias,
    '@yiggle-form-wizard': path.resolve(__dirname, '..', '..', 'vendor', 'yiggle', 'form-wizard-bundle', 'assets'),
};
```

Rebuild the Sulu admin interface:

```
php bin/console sulu:admin:update-build
```

> **Note:** The admin build output (`public/build/admin`) should be committed to your repository. Answer `n` when prompted to overwrite `webpack.config.js` and `package.json` during the build.

---

Frontend Assets
---------------

[](#frontend-assets)

The bundle ships optional frontend helpers.

### CSS

[](#css)

An optional stylesheet is available:

```
import '@yiggle-form-wizard/styles/form_wizard.css';
```

Import it in your frontend build (Webpack, Vite, AssetMapper, etc.).

### Stimulus controller (optional)

[](#stimulus-controller-optional)

For AJAX-based wizard flows using Turbo.

Requires:

```
composer require symfony/stimulus-bundle symfony/ux-turbo
```

Enable the controller in your `assets/controllers.json`:

```
{
    "controllers": {
        "@yiggle/form-wizard-bundle": {
            "receipt-trigger": {
                "enabled": true
            }
        }
    }
}
```

---

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

[](#configuration)

```
# config/packages/yiggle_form_wizard.yaml

yiggle_form_wizard:
    notifiers:
        email:
            default_from_email: '%env(default::YIGGLE_FORM_WIZARD_DEFAULT_FROM_EMAIL)%'
            default_from_name: '%env(default::YIGGLE_FORM_WIZARD_DEFAULT_FROM_NAME)%'

    payment:
        mollie:
            enabled: '%env(bool:default::YIGGLE_FORM_WIZARD_MOLLIE_ENABLED)%'
            api_key: '%env(default::YIGGLE_FORM_WIZARD_MOLLIE_API_KEY)%'
            webhook_url_base: '%env(default::YIGGLE_FORM_WIZARD_MOLLIE_WEBHOOK_URL_BASE)%'
```

Optional environment variables:

```
YIGGLE_FORM_WIZARD_DEFAULT_FROM_EMAIL
YIGGLE_FORM_WIZARD_DEFAULT_FROM_NAME

YIGGLE_FORM_WIZARD_MOLLIE_ENABLED
YIGGLE_FORM_WIZARD_MOLLIE_API_KEY
YIGGLE_FORM_WIZARD_MOLLIE_WEBHOOK_URL_BASE

```

---

Extension Points
----------------

[](#extension-points)

The bundle is designed to be extensible without modifying core code. See [docs/extension-points.md](docs/extension-points.md) for full documentation.

### Field Types

[](#field-types)

```
#[AsWizardFieldType]
final class MyFieldTypeHandler implements WizardFieldTypeHandlerInterface
{
    public function getKey(): string
    {
        return 'my_type';
    }

    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        // Build Symfony form field
    }
}
```

### Payment Providers

[](#payment-providers)

```
#[AsPaymentProvider(alias: 'acme')]
final class AcmeProvider implements PaymentProviderInterface
{
    public function getAlias(): string
    {
        return 'acme';
    }

    public function startPayment(WizardSubmission $submission): ?string
    {
        // return checkout URL
    }

    public function fetchStatus(string $transactionId): PaymentStatus
    {
        // query provider
    }
}
```

### Notifications

[](#notifications)

```
#[AutoconfigureTag('yiggle_form_wizard.wizard_notifier')]
final class MyNotifier implements WizardNotifierInterface
{
}
```

---

Events
------

[](#events)

The bundle dispatches Symfony events throughout the wizard lifecycle. See [docs/payment-lifecycle.md](docs/payment-lifecycle.md) for the full flow.

EventDescription`WizardSubmissionCreatedEvent`Dispatched when a user starts a new wizard`WizardPaymentInitiatedEvent`Dispatched when the user is redirected to a PSP`WizardPaymentFailedEvent`Dispatched if a payment transaction fails`WizardSubmissionCompletedEvent`Dispatched when the wizard is fully finished---

Development
-----------

[](#development)

```
composer install
composer qa
```

QA tools include:

- ECS
- PHPStan
- Rector
- PHPUnit

---

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

[](#documentation)

- [Mental Model](docs/mental-model.md)
- [Extension Points](docs/extension-points.md)
- [Payment Lifecycle](docs/payment-lifecycle.md)
- [Architectural Decision Records](docs/adr/)

---

License
-------

[](#license)

MIT

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance90

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity48

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.

###  Release Activity

Cadence

Every ~1 days

Total

12

Last Release

51d ago

### Community

Maintainers

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

---

Top Contributors

[![Predjee](https://avatars.githubusercontent.com/u/65652446?v=4)](https://github.com/Predjee "Predjee (26 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/yiggle-form-wizard-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/yiggle-form-wizard-bundle/health.svg)](https://phpackages.com/packages/yiggle-form-wizard-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M647](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[kimai/kimai

Kimai - Time Tracking

4.6k7.4k1](/packages/kimai-kimai)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)[easycorp/easyadmin-demo

EasyAdmin Demo Application

145.7k](/packages/easycorp-easyadmin-demo)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k16.7M309](/packages/easycorp-easyadmin-bundle)

PHPackages © 2026

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