calebporzio/onboard

此包已被放弃,不再维护。作者建议使用 spatie/laravel-onboard 包。

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

v1.7 2020-09-08 20:11 UTC

This package is auto-updated.

Last update: 2022-06-22 15:36:09 UTC


README

Onboard

一个Laravel包,用于帮助跟踪用户入门步骤。

安装

  • 通过composer安装此包
composer require calebporzio/onboard
  • config/app.php中注册服务提供者和外观
'providers' => [
    ...
    Calebporzio\Onboard\OnboardServiceProvider::class,

'aliases' => [
    ...
    Calebporzio\Onboard\OnboardFacade::class,
  • Calebporzio\Onboard\GetsOnboarded特质添加到您的应用程序的用户模型中
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);
    }
}

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