PHPackages                             smajti1/laravel-wizard - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. smajti1/laravel-wizard

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

smajti1/laravel-wizard
======================

Wizard component for laravel.

v1.7.2(2y ago)409.2k16[1 issues](https://github.com/smajti1/laravel-wizard/issues)MITPHPPHP ^7.3 || ^8.0

Since Nov 13Pushed 2y ago4 watchersCompare

[ Source](https://github.com/smajti1/laravel-wizard)[ Packagist](https://packagist.org/packages/smajti1/laravel-wizard)[ Docs](https://github.com/smajti1/laravel-wizard)[ RSS](/packages/smajti1-laravel-wizard/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (3)Versions (13)Used By (0)

Laravel-wizard
==============

[](#laravel-wizard)

simple laravel step-by-step wizard

VersionLaravel VersionPhp Version^1.6&gt;= 7.0^7.3 || ^8.0^1.46.\* || 7.\* || 8.\*^7.2 || ^8.01.15.\*^7.0Install
-------

[](#install)

```
$ composer require smajti1/laravel-wizard

```

Example/How
-----------

[](#examplehow)

1. add routes

    ```
    use App\Http\Controllers\UserWizardController;

    Route::get('wizard/user/{step?}', [UserWizardController::class, 'wizard'])->name('wizard.user');
    Route::post('wizard/user/{step}', [UserWizardController::class, 'wizardPost'])->name('wizard.user.post');
    ```
2. create steps

    add autoload field in composer.json file:

    ```
     ...
     "autoload": {
        "psr-4": {
             ...
             "App\\Wizard\\Steps\\": "app/Steps"
         },
     ...

    ```

    regenerate autoloader

    ```
     $ composer dump-autoload

    ```

    create step app/Steps/SetUserNameStep.php

    ```
    namespace App\Wizard\Steps;

    class SetUserNameStep extends \Smajti1\Laravel\Step
    {

        public static $label = 'Set user name';
        public static $slug = 'set-user-name';
        public static $view = 'wizard.user.steps._set_user_name';

        public function process(\Illuminate\Http\Request $request)
        {
            // for example, create user
            ...
            // next if you want save one step progress to session use
            $this->saveProgress($request);
        }

        public function rules(\Illuminate\Http\Request $request = null): array
        {
            return [
                'username' => 'required|min:4|max:255',
            ];
        }
    }
    ```
3. create controller

    ```
    public $steps = [
        'set-username-key' => SetUserNameStep::class,
        SetPhoneStep::class,
        ...
    ];

    protected $wizard;

    public function __construct()
    {
        $this->wizard = new Wizard($this->steps, $sessionKeyName = 'user');
    }

    public function wizard($step = null)
    {
        try {
            if (is_null($step)) {
                $step = $this->wizard->firstOrLastProcessed();
            } else {
                $step = $this->wizard->getBySlug($step);
            }
        } catch (StepNotFoundException $e) {
            abort(404);
        }

        return view('wizard.user.base', compact('step'));
    }

    public function wizardPost(Request $request, $step = null)
    {
        try {
            $step = $this->wizard->getBySlug($step);
        } catch (StepNotFoundException $e) {
            abort(404);
        }

        $this->validate($request, $step->rules($request));
        $step->process($request);

        return redirect()->route('wizard.user', [$this->wizard->nextSlug()]);
    }
    ```
4. add base view $wizard variable is now automatic sheared with view

    ```

        @foreach($wizard->all() as $key => $_step)

                @if($step->index == $_step->index)
                    {{ $_step::$label }}
                @elseif($step->index > $_step->index)
                    {{ $_step::$label }}
                @else
                    {{ $_step::$label }}
                @endif

        @endforeach

        {{ csrf_field() }}

        @include($step::$view, compact('step', 'errors'))

        @if ($wizard->hasPrev())
            Back
        @else
            Back
        @endif

        Step {{ $step->number }}/{{ $wizard->limit() }}

        @if ($wizard->hasNext())
            Next
        @else
            Done
        @endif

    ```

License
-------

[](#license)

Laravel wizard is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT)

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity75

Established project with proven stability

 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 ~234 days

Total

12

Last Release

887d ago

PHP version history (5 changes)v1.0.0PHP &gt;=5.5.9

v1.1.0PHP &gt;=7.0

v1.2.0PHP ^7.2

v1.5.0PHP ^7.2 || ^8.0

v1.6.0PHP ^7.3 || ^8.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16303352?v=4)[smajti1](/maintainers/smajti1)[@smajti1](https://github.com/smajti1)

---

Top Contributors

[![smajti1](https://avatars.githubusercontent.com/u/16303352?v=4)](https://github.com/smajti1 "smajti1 (16 commits)")

---

Tags

laravelwizardstepsstep

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/smajti1-laravel-wizard/health.svg)

```
[![Health](https://phpackages.com/badges/smajti1-laravel-wizard/health.svg)](https://phpackages.com/packages/smajti1-laravel-wizard)
```

###  Alternatives

[watson/active

Laravel helper for recognising the current route, controller and action

3253.6M14](/packages/watson-active)[statikbe/laravel-cookie-consent

Cookie consent modal for EU

213396.7k](/packages/statikbe-laravel-cookie-consent)[ycs77/laravel-wizard

A web setup wizard for Laravel application.

12022.2k](/packages/ycs77-laravel-wizard)[mtownsend/progress

A PHP package to determine steps and progress.

22116.2k](/packages/mtownsend-progress)[dragon-code/pretty-routes

Pretty Routes for Laravel

10058.7k4](/packages/dragon-code-pretty-routes)[bjuppa/laravel-blog

Add blog functionality to your Laravel project

483.3k2](/packages/bjuppa-laravel-blog)

PHPackages © 2026

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