felixdorn / onboard
跟踪用户入职步骤。
0.7.0
2022-05-18 15:43 UTC
Requires
- php: ^8.1
- honda/url-pattern-matcher: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- orchestra/testbench: ^6
- pestphp/pest: ^1
- phpstan/phpstan: ^1
- symfony/var-dumper: ^5|^6
README
安装
需要 PHP 8.1+ 和 Laravel 8.x 或 9.x
您可以通过 composer 安装此包
composer require felixdorn/onboard
将 ResumeOnboarding
中间件发布到您的 app/Http/Middleware
目录
php artisan onboard:middleware
如果您使用 Inertia,您需要在中间件的跳过方法中,当
$request->inertia()
为真时返回 false。
public function skip(Request $request): bool { if ($request->inertia()) { return false; } return parent::skip($request); }
将其添加到您的 app/Http/Kernel.php
// ... protected $middlewareGroups = [ 'web' => [ // ... \App\Http\Middleware\ResumeOnboarding::class ] ]
然后,请确保您的 User
模型使用 HasOnboarding
。
use Felix\Onboard\Concerns\HasOnboarding; class User extends Authenticatable { use HasOnboarding; // ... }
一切准备就绪。
用法
在 app/Providers/AppServiceProvider.php
中添加您的入职步骤
如果您有很多步骤,您可以考虑创建一个
OnboardServiceProvider
(不要忘记在config/app.php
中注册它)。
use \App\Models\User; use \Felix\Onboard\Facades\Onboard; Onboard::add('verify_email') ->completedIf(function (User $user) { return $user->hasVerifiedEmail(); // or whatever }) ->skipIf(function () { return $user->github_id != null; }) ->route('verification.notice') ->allowRoutes(['verification.verify']); class HomeController extends Controller { public function index(\Illuminate\Http\Request $request) { return [ 'steps' => $request->user()->onboarding()->toArray() ]; } }
警告:请小心,闭包在请求期间会被缓存(它们的结果会被缓存)。这在传统应用程序中应该不会成为问题,如果遇到问题,请告知我们。
您可以多次调用 completedIf 和 skipIf,如果所有闭包都返回 true,步骤将被标记为完成或跳过。
您可以将闭包传递给解决路由的懒加载
Onboard::add('create_team') ->route(fn () => route('teams.create'));
全局允许的路由
无论入职流程的状态如何,您可能希望用户可以访问某些 URL,例如注销页面。
Onboard::allow(['/api/*']); Onboard::allowRoutes(['logout', 'settings.billing']);
Step::allow
和 Onboard::allow
使用 honda/url-pattern-matcher
,有关如何使用 Onboard 中的模式匹配的更多详细信息,请查看它。
测试
composer test
Laravel 的 Onboard 由 Félix Dorn 根据 MIT 许可证 创建。