bambolee-digital / onboarding-package
Laravel/FilamentPHP 用于管理可定制入职流程的包。
1.0.6
2024-09-16 18:30 UTC
Requires
- php: ^8.1
- bambolee-digital/translatable-resource-kit: ^1.0
- filament/filament: ^3.0
- filament/spatie-laravel-translatable-plugin: ^3.2
- laravel/framework: ^11.0
- spatie/laravel-translatable: ^6.8
README
OnboardingPackage 是一个 Laravel 包,允许您为用户创建定制的入职流程,包括动态问题、选项、基于用户响应的条件消息和流程控制。该包使用 Spatie Laravel Translatable 支持多种语言,并集成 FilamentPHP 管理面板以方便管理。
目录
安装
您可以通过 Composer 安装此包
composer require bamboleedigital/onboarding-package
安装后,发布迁移和配置文件
php artisan vendor:publish --provider="BamboleeDigital\OnboardingPackage\Providers\OnboardingServiceProvider" --tag="migrations" php artisan vendor:publish --provider="BamboleeDigital\OnboardingPackage\Providers\OnboardingServiceProvider" --tag="config"
然后,运行迁移
php artisan migrate
配置
Filament 和 Spatie Laravel Translatable
请确保在您的项目中安装并配置了 FilamentPHP 和 Spatie Laravel Translatable。
安装 Filament 翻译插件
composer require filament/spatie-laravel-translatable-plugin:"^3.2" -W
将插件添加到您的 Filament 面板
use Filament\SpatieLaravelTranslatablePlugin; public function panel(Panel $panel): Panel { return $panel // ... ->plugin( SpatieLaravelTranslatablePlugin::make() ->defaultLocales(['en', 'pt']), // Set the languages you want to support ); }
包配置
包配置文件允许您根据需要自定义选项。将在您的项目根目录的 config
文件夹中发布 config/onboarding-package.php
文件。
用法
管理问题和选项
访问 FilamentPHP 管理面板并导航到 问题 菜单。
创建新问题
- 点击 创建。
- 输入 问题文本。使用
LocaleSwitcher
添加不同语言中的翻译。 - 选择 问题类型
- 文本:用户将提供一个文本答案。
- 单选:用户将选择一个选项。
- 多选:用户可以选择多个选项。
- 保存问题。
管理选项
对于 单选 或 多选 问题
- 在创建的问题中,访问 选项 选项卡。
- 点击 创建 添加新选项。
- 输入 选项文本 和翻译(如有必要)。
- 可选地,添加 Markdown 格式的 条件消息。如果选择此选项,则会向用户显示此消息。
- 如果您想根据用户的响应控制流程,请设置 下一问题。
- 保存选项。
定义条件消息
条件消息直接与选项关联。向选项添加条件消息时,如果用户选择该选项,则会向用户显示该消息。
控制问题流程
您可以在选择特定选项后定义用户将看到的问题的下一个问题
- 在选项创建或编辑表单中,选择相应字段中的 下一问题。
- 如果没有定义下一个问题,系统将遵循默认顺序。
API 端点
提交用户响应
URL: /api/onboarding/responses
方法: POST
参数
question_id
(整数,必需):已回答问题的 ID。response_id
(整数,可选):选择选项的 ID(对于选择问题)。response
(字符串,可选):用户的响应(对于文本问题)。
请求示例
POST /api/onboarding/responses Content-Type: application/json { "question_id": 1, "response_id": 5, "user_id": 123 }
响应示例
{ "next_question": { "id": 2, "text": "What is your age?", "type": "text", "options": [] }, "conditional_message": { "message": "Thank you for choosing this option. Here's a personalized message." } }
获取用户响应
URL: /api/onboarding/user-responses
方法: GET
参数
user_id
(整数,必需):用户ID。
请求示例
GET /api/onboarding/user-responses?user_id=123
响应示例
{ "responses": [ { "question_id": 1, "question_text": "What is your name?", "response": "John", "response_id": null, "option_text": null }, { "question_id": 2, "question_text": "What is your favorite color?", "response": null, "response_id": 5, "option_text": "Blue" } // Other responses... ] }
用法示例
基本入门流程
- 用户开始入门流程。
- 应用程序调用端点发送用户的回答。
- 后端返回下一个问题和任何条件消息。
- 前端显示问题和处理用户的回答。
- 流程继续,直到没有更多问题。
显示条件消息
- 当用户选择带有条件消息的选项时,该消息会在API响应中返回并可以立即显示。
根据回答控制流程
- 通过在选项上设置下一个问题,您可以引导用户进入入门流程的不同路径,创建个性化的体验。
许可证
OnboardingPackage遵循MIT许可证。