NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Onboarding for Laravel

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" key

Sprá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 resolver

find() 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 kryptomien

Odoslaní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.