marvinlabs / laravel-setup-wizard
Laravel应用的网络设置向导
Requires
- php: >=5.5.9
- illuminate/support: 5.4.*
- laravelcollective/html: ^5.4
This package is not auto-updated.
Last update: 2024-09-14 18:53:04 UTC
README
一个帮助您为应用程序构建网络设置向导的Laravel包
设置
将包添加到您的项目中
composer require marvinlabs/laravel-setup-wizard
声明服务提供者和别名
将以下行添加到您的 config/app.php
文件中
'providers' => [ // ... // Other Service Providers // ... MarvinLabs\SetupWizard\ServiceProvider::class, ], 'aliases' => [ // ... // Other aliases // ... 'SetupWizard' => MarvinLabs\SetupWizard\Facades\SetupWizard::class, ],
声明所需的中间件
将以下行添加到您的 app/Http/Kernel.php
文件中
protected $middlewareGroups = [ // ... // Other Middleware // ... 'setup_wizard' => [ \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, 'setup_wizard.initializer', ] ]; protected $routeMiddleware = [ // ... // Other Middleware // ... 'setup_wizard.initializer' => \MarvinLabs\SetupWizard\Middleware\SetupWizardInitializer::class, 'setup_wizard.trigger' => \MarvinLabs\SetupWizard\Middleware\SetupWizardTrigger::class, ];
启用中间件以在需要时启动向导
如果您需要在需要时自动启动设置向导,您需要将 SetupWizardTrigger
中间件添加到您要保护的路线中。例如,如果您有一个用于显示管理面板的路由组,您可以在那里做
Route::group([ 'prefix' => 'admin', 'middleware' => 'setup_wizard.trigger' ], function () { // ... });
这样,设置向导仅在尝试访问管理面板时才会被触发。
触发设置向导的中间件应放在中间件列表的第一位
发布资产
为了正确获取CSS,您至少需要将包资产发布到您的公共目录中
php artisan vendor:publish --provider="MarvinLabs\SetupWizard\ServiceProvider" --tag="assets"
可选地,您可以发布包中的更多文件,以便能够覆盖它们。使用与任何其他包相同的Artisan命令(将发布所有供应商包中的文件)
php artisan vendor:publish
或者,您可以只发布一些包文件以覆盖所需的内容。库已将它们分为4个不同的类别(资产类别已发布)
php artisan vendor:publish --provider="MarvinLabs\SetupWizard\ServiceProvider" --tag="config"
php artisan vendor:publish --provider="MarvinLabs\SetupWizard\ServiceProvider" --tag="views"
php artisan vendor:publish --provider="MarvinLabs\SetupWizard\ServiceProvider" --tag="translations"
如果您之前已发布了一些文件并想覆盖它们,请使用上面的Artisan命令中的 --force
标志。
配置
该包的配置是通过 config/setup_wizard.php
文件完成的。每个配置选项都在该文件中进行了文档说明,因此我们在这里不会重复此信息。
添加您自己的向导步骤
您可以轻松地添加或删除向导中的步骤。
创建步骤类
最简单的方法是从我们捆绑的步骤之一开始。步骤通常将继承自 \MarvinLabs\SetupWizard\Steps\BaseStep
并必须实现一些更多方法。
getFormData()
这是将要传递到您的视图中的数据。如果您没有指定该方法,它将返回一个空数组。您在此数组中传递的数据将直接在步骤视图中作为变量可用。例如,如果您返回 [ 'myVar' => 23 ]
,您将能够在步骤视图中访问 $myVar
。
apply($formData)
在移动到下一个步骤之前调用的方法。参数 $formData
包含步骤表单提交的数据(如果有)。
该方法应返回 true
如果向导可以进入下一个步骤。如果不可以,它应返回 false
并可以通过使用方法 $this->addError('my_key', 'My error message')
提供用户反馈。
undo()
当从下一个步骤返回到此步骤时调用该方法。这基本上是撤销由 apply
方法所做的一切。
该方法应返回 true
如果向导可以返回到我们的步骤。如果不可以,它应返回 false
并可以通过使用方法 $this->addError('my_key', 'My error message')
提供用户反馈。
创建步骤视图
如果您已将步骤类注册为具有id my_step
,则需要创建一个视图,该视图将在文件 resources/views/vendor/setup_wizard/partials/steps/my_step.blade.php
中找到。
创建字符串
一些字符串对于步骤正确显示是必需的:图标、标题、描述等。这些可以在文件 resources/lang/en/steps.php
中找到。您会注意到每个步骤ID都包含一些提供这些信息的字符串。
将您的步骤添加到配置中
打开 config/setup_wizard.php
并将您的步骤类添加到向导步骤列表中
'steps' => [
'requirements' => \MarvinLabs\SetupWizard\Steps\RequirementsStep::class,
'folders' => \MarvinLabs\SetupWizard\Steps\FoldersStep::class,
'env' => \MarvinLabs\SetupWizard\Steps\EnvFileStep::class,
'database' => \MarvinLabs\SetupWizard\Steps\DatabaseStep::class,
'my_step' => \App\Setup\MyStep::class',
'final' => \MarvinLabs\SetupWizard\Steps\FinalStep::class,
],
步骤的声明顺序就是它们将被运行的顺序。当然,您可以删除一些默认步骤。但是,您应该始终以FinalStep结束向导。该步骤将写入一个文件,这将防止设置向导在完成后再运行。这提供了安全性,因为如果存在 storage/.setup_wizard
文件,则没有人能够再次运行设置。
致谢
- 一些代码取自另一个类似项目:RachidLaasri/LaravelInstaller