PHPackages                             james.rus52/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. james.rus52/laravel-wizard

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

james.rus52/laravel-wizard
==========================

Wizard component for laravel.

v2.4.0(1mo ago)180MITPHPPHP ^7.2 || ^8.0

Since Nov 13Pushed 1mo agoCompare

[ Source](https://github.com/jamesRUS52/laravel-wizard)[ Packagist](https://packagist.org/packages/james.rus52/laravel-wizard)[ Docs](https://github.com/jamesRUS52/laravel-wizard)[ RSS](/packages/jamesrus52-laravel-wizard/feed)WikiDiscussions master Synced yesterday

READMEChangelog (4)Dependencies (4)Versions (22)Used By (0)

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

[](#laravel-wizard)

[![Screenshot](screenshot.png)](screenshot.png)

simple laravel step-by-step wizard

VersionLaravel VersionPhp Version1.15.\*^7.0^2.06.\* || 7.\* || 8.\*^7.2Install
-------

[](#install)

```
$ composer require james.rus52/laravel-wizard

```

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

[](#examplehow)

1. add routes

    ```
    Route::get('/create/{step?}', [\App\Http\Controllers\CreationRequestsController::class, 'create'])
            ->name('requests.create');
        Route::post('/create/{step}', [\App\Http\Controllers\CreationRequestsController::class, 'store'])
            ->name('requests.store');
    ```
2. create steps

    create step class

    ```
    class InformationStepWizard extends \jamesRUS52\Laravel\Step
    {
      public function process(Request $request)
      {
         $this->saveProgress($request);
      }

       public function getAuxData(): array
       {
           return [
               'owners' => 'Some extra data for view on this step',
           ];
       }

       public function rules(Request $request = null): array
       {
           return [
               'owner' => 'required',
           ];
       }
    }
    ```
3. create controller

    ```
    class CreationRequestsController extends Controller
    {
    protected Wizard $wizard;

       public function __construct()
       {
           $this->wizard = new Wizard('Request wizard', [
               new InformationStepWizard('information', 'Information', 'requests.create.information-step-wizard'),
               new RequestTypeStepWizard('request-type', 'Request type', 'requests.create.request-type-step-wizard'),
               new ResourcesStepWizard('resources', 'Choose resources', 'requests.create.resources-step-wizard'),
               new ConfirmationStepWizard('confirmation', 'Confirmation', 'requests.create.confirmation-step-wizard'),
           ],
               'creation-request'
           );
       }

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

           return view('requests.create.layout-wizard',
               array_merge([
                       'type' => 'creation',
                   ],
                   $step->getAuxData(),
               )
           );
       }

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

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

           if ($this->wizard->hasNext()) {
               return redirect()->route('requests.create.', [$this->wizard->nextStep(false)->slug]);
           }

           // Finaly Create Request
           $full_wizard_data = $this->wizard->data();
           $this->wizard->clearProgress();

           return redirect()->route('requests.index');
       }
    }
    ```
4. add base view $wizard variable is now automatic sheared with view Layout wizard template

    ```
    {{$wizard->getTitle()}}

        @foreach($wizard->getSteps() as $step)

                @if($step->index == $wizard->currentStep()->index)
                    {{ $step->label }}
                @elseif($wizard->currentStep()->index > $loop->index)
                    {{ $step->label }}
                @else
                    {{ $step->label }}
                @endif

        @endforeach

            {{$wizard->completionPercent()}}%

        @csrf

                    @include($wizard->currentStep()->view, ['step' => $wizard->currentStep(), 'errors' => $errors])

                @if ($wizard->hasPrev())

                    Back

                @endif

                    Step {{ $wizard->currentStep()->getNumber() }} of {{ $wizard->stepsCount() }}

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

    ```

License
-------

[](#license)

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

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance90

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 62.5% 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 ~179 days

Recently: every ~365 days

Total

20

Last Release

49d ago

Major Versions

v1.8.1 → v2.0.02021-03-12

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

v1.1.0PHP &gt;=7.0

v1.2.0PHP ^7.2

1.5.x-devPHP ^7.2 || ^8.0

### Community

Maintainers

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

---

Top Contributors

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

---

Tags

laravelwizardstepsstep

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

###  Alternatives

[watson/active

Laravel helper for recognising the current route, controller and action

3253.6M14](/packages/watson-active)[smajti1/laravel-wizard

Wizard component for laravel.

409.2k](/packages/smajti1-laravel-wizard)[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)

PHPackages © 2026

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