fflch/laravel-stepper

分步式Laravel 5助手。

1.8.1 2024-09-12 17:16 UTC

This package is auto-updated.

Last update: 2024-09-12 17:43:17 UTC


README

通过分步式(stepper)逐步创建进度可视化工具的包。

安装

要将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';
    //...
}