axn/laravel-stepper

1.7.0 2023-06-30 13:48 UTC

This package is auto-updated.

Last update: 2024-08-30 01:49:35 UTC


README

允许您逐步创建进度可视化工具的包。

安装

要将Laravel Stepper作为Composer包安装并用于Laravel 5,请运行以下命令:

composer require axn/laravel-stepper

安装完成后,该包将通过Artisan命令 package:discover(Laravel >=5.5)自动注册。如果没有,您必须在config/app.phpproviders部分中手动注册服务提供者,添加以下行:

'Axn\LaravelStepper\ServiceProvider',

使用

Stepper将被用于多个页面。一个应用程序可能有多个Stepper,因此必须在专用类中定义Stepper。

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当前是哪个步骤:$stepper->setCurrentStepName('step 3')。然后,Stepper的渲染将被传递到视图中,您可以在其中简单地放置:{!! $stepper !!}

自定义模板

更改模板

此包提供了一些模板。默认情况下,使用“default”模板。要使用“arrows”模板,您需要向Stepper类中添加要使用的模板名称

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类

{{ $stepper->getStep($stepName) }} 根据步骤名称返回一个步骤,实例化StepInterface

{{ $stepper->getCurrentStep($stepName) }} 返回当前步骤的实例

{{ $stepper->getPrevStep($stepName) }} 返回上一个步骤的实例

{{ $stepper->getNextStep($stepName) }} 返回下一个步骤的实例

{{ $stepper->stepExists($stepName) }} 获取给定名称的步骤是否存在

{{ $stepper->getNumSteps() }} 获取步骤总数

{{ $stepper->getCurrentStepName() }} 获取当前步骤名称

步进对象实现了迭代器接口,因此可以轻松地在其上循环。每个循环都返回一个由Step类实现的StepInterface实例。

@foreach ($stepper as $step)
    // ...
@endforeach

Step类(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';
    //...
}