Registrácia tokov
Toky zaregistrujte raz — zvyčajne v metóde boot() niektorého zo service providerov aplikácie:
namespace App\Providers;
use App\Models\User;
use Illuminate\Support\ServiceProvider;
use RoundlyConsulting\Onboarding\Facades\Onboarding;
use RoundlyConsulting\Onboarding\Flow;
use RoundlyConsulting\Onboarding\Step;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
Onboarding::register(Flow::make('Profile Onboarding')->of([
Step::make('Upload Photo')
->cta('Upload Now')
->action('users@photo@upload') // a route name, URL, or any hint your frontend understands
->completeIf(fn (?User $user) => (bool) $user?->photo),
]));
}
}Registrácia bez kľúča uloží tok pod predvolený kľúč default (uložený v OnboardingManager::$default). Ďalšie toky zaregistrujte pod explicitnými kľúčmi:
Onboarding::register('admin', Flow::make('Admin Setup')->of([
Step::make('Invite your team'),
Step::make('Connect billing')->completeIf(fn (?User $user) => $user?->hasBilling()),
]));Zaregistrovať môžete aj obyčajné pole krokov — balík ho zabalí do Flow a bez kľúča sa z neho stane predvolený tok:
Onboarding::register([
Step::make('Upload Photo')->cta('Upload Now'),
]);Fluentná registrácia
Onboarding::flow() vytvorí, zaregistruje a vráti prázdny tok pod kľúčom — tok, ktorý tam už bol, nahradí. add() pridá krok a vráti práve tento Step, takže builder kroku pokračuje priamo za ním:
Onboarding::flow('default')
->title('Profile Onboarding')
->add('Upload Photo')->key('upload-photo')->cta('Upload Now')
->action('users@photo@upload')
->completeIf(fn (?User $user) => (bool) $user?->photo);Keďže add() vracia Step, nie tok, každý ďalší krok začnite z premennej toku — alebo hotové kroky pridajte cez addStep():
$flow = Onboarding::flow('default')->title('Profile Onboarding');
// add() returns the new Step, so start every step from the flow
$flow->add('Upload Photo')->key('upload-photo')->completeWhenFilled('avatar_path');
$flow->add('Verify email')->key('verify-email')->completeWhenTrue('hasVerifiedEmail');
// or append ready-made steps (variadic, returns the Flow)
$flow->addStep(
Step::make('Invite team')->completeWhenHas('teams'),
Step::make('Add a bio')->optional()->completeWhenFilled('bio'),
);Vlastné triedy tokov
Pre znovupoužiteľné toky rozšírte Flow a nakonfigurujte ho v chránenej metóde setup(), ktorá sa volá z konštruktora:
namespace App\Onboarding;
use RoundlyConsulting\Onboarding\Flow;
use RoundlyConsulting\Onboarding\Step;
final class UserOnboarding extends Flow
{
protected function setup(): void
{
$this->title('User Onboarding')->of([
Step::make('Verify email')->key('verify-email')->completeWhenTrue('hasVerifiedEmail'),
Step::make('Upload photo')->key('photo')->route('profile.photo')->completeWhenFilled('avatar_path'),
Step::make('Add a bio')->key('bio')->optional()->completeWhenFilled('bio'),
]);
}
}Vlastný tok zaregistrujte názvom triedy — register si ho vytvorí sám:
use App\Onboarding\UserOnboarding;
use RoundlyConsulting\Onboarding\Facades\Onboarding;
Onboarding::register(UserOnboarding::class); // stored as the default flow
Onboarding::register('user', UserOnboarding::class); // stored under the "user" keySpráva registra
Onboarding::find('admin'); // ?Flow — the registered definition
Onboarding::find('missing', new Flow()); // the fallback when the key is unknown
Onboarding::has('admin'); // bool
Onboarding::all(); // Collection<string, Flow>, keyed by flow key
Onboarding::forget('admin'); // remove one flow
Onboarding::flush(); // remove all flows and the resolverfind() vráti samotnú zaregistrovanú definíciu — použite ju na rozšírenie toku pri štarte a čítajte cez Onboarding::for(), aby sa na zdieľanú inštanciu nikdy nenaviazal subjekt. Všetky metódy managera nájdete v časti Fasáda Onboarding.
Registrácia názvu triedy, ktorá nie je Flow ani jej potomok, vyhodí InvalidFlowException — pozrite si Rozšírenie a výnimky.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.