dilneiss/onboard

跟踪用户在您的应用中设置时的入门步骤。

维护者

详细信息

github.com/dilneiss/onboard

源代码

安装: 199

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 50

v1.8 2022-02-09 00:52 UTC

This package is auto-updated.

Last update: 2024-09-09 06:53:44 UTC


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);
    }
}

小贴士:不要将此中间件添加到更新入门步骤状态的路由中,否则用户将无法继续,因为他们将被重定向回入门步骤。