smajti1/laravel-wizard
Composer 安装命令:
composer require smajti1/laravel-wizard
包简介
Wizard component for laravel.
README 文档
README
simple laravel step-by-step wizard
| Version | Laravel Version | Php Version |
|---|---|---|
| ^1.6 | >= 7.0 | ^7.3 || ^8.0 |
| ^1.4 | 6.* || 7.* || 8.* | ^7.2 || ^8.0 |
| 1.1 | 5.* | ^7.0 |
Install
$ composer require smajti1/laravel-wizard
Example/How
-
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');
-
create steps
add autoload field in composer.json file:
... "autoload": { "psr-4": { ... "App\\Wizard\\Steps\\": "app/Steps" }, ...regenerate autoloader
$ composer dump-autoloadcreate 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', ]; } }
-
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()]); }
-
add base view $wizard variable is now automatic sheared with view
<ol> @foreach($wizard->all() as $key => $_step) <li> @if($step->index == $_step->index) <strong>{{ $_step::$label }}</strong> @elseif($step->index > $_step->index) <a href="{{ route('wizard.user', [$_step::$slug]) }}">{{ $_step::$label }}</a> @else {{ $_step::$label }} @endif </li> @endforeach </ol> <form action="{{ route('wizard.user.post', [$step::$slug]) }}" method="POST"> {{ csrf_field() }} @include($step::$view, compact('step', 'errors')) @if ($wizard->hasPrev()) <a href="{{ route('wizard.user', ['step' => $wizard->prevSlug()]) }}">Back</a> @else <a href="#">Back</a> @endif <span>Step {{ $step->number }}/{{ $wizard->limit() }}</span> @if ($wizard->hasNext()) <button type="submit">Next</button> @else <button type="submit">Done</button> @endif </form>
License
Laravel wizard is open-sourced software licensed under the MIT license
smajti1/laravel-wizard 适用场景与选型建议
smajti1/laravel-wizard 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.32k 次下载、GitHub Stars 达 40, 最近一次更新时间为 2016 年 11 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「wizard」 「steps」 「laravel」 「step」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 smajti1/laravel-wizard 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 smajti1/laravel-wizard 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 smajti1/laravel-wizard 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Provides methods to create, validate and render HTML forms in PHP.
A web setup wizard for Laravel application.
Site generator / tree model duplicator used to generate mini-website or duplicate tree model
A PHP package to determine steps and progress.
A Codeception adapter for Allure report.[NON OFFICIAL FORK!]
Multi step wizard widget using tabs to guide a user through steps to complete a task. Based on the Form wizard (using tabs) from lukepzak (see http://bootsnipp.com/snippets/featured/form-wizard-using-tabs).
统计信息
- 总下载量: 9.32k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 40
- 点击次数: 28
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-11-13