dilneiss / onboard
跟踪用户在您的应用中设置时的入门步骤。
v1.8
2022-02-09 00:52 UTC
Requires
- laravel/framework: 5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*|9.*
Requires (Dev)
- phpunit/phpunit: ^4.8.35
README
入门
一个用于跟踪用户入门步骤的Laravel扩展包。
安装
- 使用composer安装该包
composer require calebporzio/onboard
- 在
config/app.php
中注册Service Provider和Facade
'providers' => [ ... Calebporzio\Onboard\OnboardServiceProvider::class, 'aliases' => [ ... Calebporzio\Onboard\OnboardFacade::class,
- 将
Calebporzio\Onboard\GetsOnboarded
特质添加到您的应用User模型中
class User extends Model { use \Calebporzio\Onboard\GetsOnboarded; ...
示例配置
在App\Providers\AppServiceProvider.php
中配置您的步骤
use App\User; use Calebporzio\Onboard\OnboardFacade; class AppServiceProvider extends ServiceProvider { // ... public function boot() { OnboardFacade::addStep('Complete Profile') ->link('/profile') ->cta('Complete') ->completeIf(function (User $user) { return $user->profile->isComplete(); }); OnboardFacade::addStep('Create Your First Post') ->link('/post/create') ->cta('Create Post') ->completeIf(function (User $user) { return $user->posts->count() > 0; });
用法
现在您可以在任何需要的地方访问这些步骤及其状态。以下是一个示例blade模板
@if (auth()->user()->onboarding()->inProgress()) <div> @foreach (auth()->user()->onboarding()->steps as $step) <span> @if($step->complete()) <i class="fa fa-check-square-o fa-fw"></i> <s>{{ $loop->iteration }}. {{ $step->title }}</s> @else <i class="fa fa-square-o fa-fw"></i> {{ $loop->iteration }}. {{ $step->title }} @endif </span> <a href="{{ $step->link }}" {{ $step->complete() ? 'disabled' : '' }}> {{ $step->cta }} </a> @endforeach </div> @endif
查看以下所有可用功能
$onboarding = Auth::user()->onboarding(); $onboarding->inProgress(); $onboarding->finished(); $onboarding->steps()->each(function($step) { $step->title; $step->cta; $step->link; $step->complete(); $step->incomplete(); });
定义自定义属性并访问它们
// Defining the attributes OnboardFacade::addStep('Step w/ custom attributes') ->attributes([ 'name' => 'Waldo', 'shirt_color' => 'Red & White', ]); // Accessing them $step->name; $step->shirt_color;
示例中间件
如果您想确保用户在访问您的Web应用时被重定向到下一个未完成的入门步骤,您可以使用以下中间件作为起点
<?php namespace App\Http\Middleware; use Auth; use Closure; class RedirectToUnfinishedOnboardingStep { public function handle($request, Closure $next) { if (auth()->user()->onboarding()->inProgress()) { return redirect()->to( auth()->user()->onboarding()->nextUnfinishedStep()->link ); } return $next($request); } }
小贴士:不要将此中间件添加到更新入门步骤状态的路由中,否则用户将无法继续,因为他们将被重定向回入门步骤。