PHPackages                             actengage/nova-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. actengage/nova-wizard

ActiveLibrary

actengage/nova-wizard
=====================

Turn your long and complex resource forms into a simple and clean multi-step process.

v0.9.8(4y ago)51.4k11[2 PRs](https://github.com/actengage/nova-wizard/pulls)1MITPHPPHP &gt;=7.1.0

Since Jun 1Pushed 4y ago1 watchersCompare

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

READMEChangelogDependencies (2)Versions (10)Used By (1)

Laravel Nova Wizard
===================

[](#laravel-nova-wizard)

Turn your long and complex resource forms into a simple and clean multi-step process. This package was designed to change as little about Nova as possible. Just implement the trait, define the steps and the plugin does the rest.

[![Screenshot](./screenshot.gif?raw=true)](./screenshot.gif?raw=true)

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

[](#installation)

```
composer install actengage/nova-wizard

```

Useage
------

[](#useage)

1. Use the `Actengage\Wizard\HasMultipleSteps` trait.
2. Make the `Actengage\Wizard\Step` instances in the `fields()` method.

```
namespace App\Nova;

use Actengage\Wizard\HasMultipleSteps;
use Actengage\Wizard\Step;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\DateTime;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Password;

class User extends Resource
{
    use HasMultipleSteps;

    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = 'App\\User';

    /**
     * The single value that should be used to represent the resource when being displayed.
     *
     * @var string
     */
    public static $title = 'name';

    /**
     * The columns that should be searched.
     *
     * @var array
     */
    public static $search = [
        'id', 'name', 'email',
    ];

    /**
     * Get the fields displayed by the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            Step::make('Name & Email', [
                Text::make('Name')
                    ->sortable()
                    ->rules('required', 'max:255'),

                Text::make('Email')
                    ->sortable()
                    ->rules('required', 'email', 'max:254')
            ]),

            Step::make('Password', [
                Password::make('Password')
                    ->onlyOnForms()
                    ->creationRules('required', 'string', 'min:8')
                    ->updateRules('nullable', 'string', 'min:8'),
            ]),

            Step::make('Options', [
                DateTime::make('Email Verified At')
            ]),
        ];
    }
}
```

Display Steps as Panels
-----------------------

[](#display-steps-as-panels)

Sometimes you want your steps to be displayed as panels without having to redundant define a panel inside a step. To do this, just use the `displayasPanel()` method. Additionally, if you want to control where the toolbar is displayed, you can use the `withToolbar()` method just like a panel.

[![Display as panel with toolbar](./screenshot-2.png?raw=true)](./screenshot-2.png?raw=true)

```
Step::make('Name & Email', [
    Text::make('Name')
        ->sortable()
        ->rules('required', 'max:255'),

    Text::make('Email')
        ->sortable()
        ->rules('required', 'email', 'max:254')
])->displayAsPanel()->withToolbar(),
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity42

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

Total

9

Last Release

1766d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3751e573441701b44fab996c721a3249349c97f023d99986c2f6d646947727e5?d=identicon)[actengage](/maintainers/actengage)

---

Top Contributors

[![actengage](https://avatars.githubusercontent.com/u/33735047?v=4)](https://github.com/actengage "actengage (31 commits)")

---

Tags

laravelnova

### Embed Badge

![Health badge](/badges/actengage-nova-wizard/health.svg)

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

###  Alternatives

[dillingham/nova-attach-many

Attach Many Nova field

2712.0M2](/packages/dillingham-nova-attach-many)[sbine/route-viewer

A Laravel Nova tool to view your registered routes.

57215.9k](/packages/sbine-route-viewer)[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

14720.0k](/packages/markwalet-nova-modal-response)[stepanenko3/nova-cards

A Laravel Nova info cards.

33143.0k](/packages/stepanenko3-nova-cards)[pos-lifestyle/laravel-nova-date-range-filter

A Laravel Nova date range filter.

16179.1k](/packages/pos-lifestyle-laravel-nova-date-range-filter)

PHPackages © 2026

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