fflch / laravel-stepper
分步式Laravel 5助手。
Requires
- illuminate/support: ~5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
README
通过分步式(stepper)逐步创建进度可视化工具的包。
- 作者: AXN Informatique
- 网站: http://www.axn-informatique.com/
- 许可证: MIT许可证(见许可证文件)
安装
要将Laravel Stepper作为Composer包安装,用于Laravel 5,只需运行
composer require axn/laravel-stepper
安装完成后,该包将通过Artisan命令 package:discover
(Laravel >= 5.5)自动注册。如果没有,您必须在 config/app.php
中的 providers
部分添加以下行来注册服务提供者
'Axn\LaravelStepper\ServiceProvider',
使用
该步进器将在多个页面上使用。一个应用程序可能有多个步进器,因此必须在专用类中定义步进器
use Axn\LaravelStepper\Stepper; class BasicStepper extends Stepper { public function register() { $this->addStep('step 1'); $this->addStep('step 2'); $this->addStep('step 3'); $this->addStep('step 4'); $this->addStep('step 5'); } }
关于该类的重要事项
- 它扩展了抽象类:
Axn\LaravelStepper\Stepper
- 它实现了
register()
方法 - 在该方法中,定义了所有不同的步骤
然后,我们可以将此类注入到控制器的方法中
//... public function index(BasicStepper $stepper) { $stepper->setCurrentStepName('step 3'); return $this->view('example-view', [ 'stepper' => $stepper->render() ]); } //...
因为该类是通过IoC容器注入的,所以它被实例化,并自动调用 register()
。之后,必须明确告诉步进器当前步骤是哪一个:$stepper->setCurrentStepName('step 3')
。然后,步进器的渲染将被传递到视图中,在其中您可以简单地将:{{ $stepper }}
。
自定义模板
更改模板
此包提供多个模板。默认情况下,使用“default”模板。要使用“arrows”模板,您需要将模板名称添加到步进器类中
use Axn\LaravelStepper\Stepper; class BasicStepper extends Stepper { protected $view = 'stepper::arrows'; //... }
就这样!
当然,以非常经典的方式,您可以使用模板系统的任何视图。例如,要使用模板 resources/views/partials/steppers/custom.blade.php
,请将以下代码放在您的类中
use Axn\LaravelStepper\Stepper; class BasicStepper extends Stepper { protected $view = 'partials.steppers.custom'; //... }
自定义模板
所有提供的模板都是理解如何使用包的示例,而不是生产模板。例如,CSS样式嵌入在模板中,这不是一个好的做法。
可以从包中提供的模板之一开始,并对其进行修改。为此,您必须发布模板,然后编辑它们。
要发布所有模板,请使用以下命令
php artisan vendor:publish
在此步骤之后,您将在 resources/views/vendor/stepper/
中找到所有模板。这将很容易根据您的需求进行编辑。
模板中的方法
要自定义模板,可以使用不同的方法。以下是列表
步进器类
{{ $stepper->getStep($stepName) }}
根据步骤名称返回一个步骤,实例为 StepInterface
{{ $stepper->getCurrentStep($stepName) }}
返回当前步骤的实例
{{ $stepper->getPrevStep($stepName) }}
返回前一个步骤的实例
{{ $stepper->getNextStep($stepName) }}
返回下一个步骤的实例
{{ $stepper->stepExists($stepName) }}
获取给定名称的步骤是否存在
{{ $stepper->getNumSteps() }}
获取步骤总数
{{ $stepper->getCurrentStepName() }}
获取当前步骤的名称
步进器对象实现了Iterator接口,因此可以轻松遍历。每次循环都返回一个由Step类实现的 StepInterface 实例。
@foreach ($stepper as $step) // ... @endforeach
步骤类(StepInterface实现以及更多,如果您愿意)
{{ $step->getName() }}
返回与步骤关联的名称
{{ $step->getUrl() }}
返回与步骤关联的URL
{{ $step->getRoute() }}
返回与步骤关联的路由
{{ $step->getPosition() }}
返回步骤的位置
{{ $step->getTitle() }}
返回与步骤关联的标题
{{ $step->getDescription() }}
返回与步骤关联的描述
{{ $step->isCurrent() }}
返回是否为当前步骤
{{ $step->isPassed() }}
返回步骤是否在过往中
{{ $step->isFirst() }}
返回是否为第一个步骤
{{ $step->isLast() }}
返回是否为最后一个步骤
自定义类
因为我们的步骤器具体类是抽象步骤器类的子类,所以可以覆盖该步骤器类的属性和方法。
通过实现StepInterface接口并在步骤器类中指定要使用的Step类的名称,也可以非常容易地覆盖Step类
use Axn\LaravelStepper\Stepper; class BasicStepper extends Stepper { protected $stepClass = 'App\CustomStep'; //... }