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

Definovanie krokov

Step je jedna úloha onboardingu. Je dokončený, pokiaľ pravidlo completeIf neurčí inak, a nikdy nie je vylúčený, pokiaľ to neurčí pravidlo excludeIf. Obe closures dostanú subjekt naviazaný na tok — alebo null, ak žiadny nie je:

use App\Models\User;
use RoundlyConsulting\Onboarding\Step;

Step::make('Verify email')
    ->cta('Resend verification')
    ->action('verification.notice')
    ->meta(['icon' => 'mail'])
    ->completeIf(fn (?User $user) => $user?->hasVerifiedEmail())
    ->excludeIf(fn (?User $user) => $user?->is_guest);

Metódy buildera

MetódaÚčel
title(?string)Zobrazovaný názov; môže byť prekladový kľúč.
cta(?string)Text výzvy na akciu; môže byť prekladový kľúč.
action(?string)Voľný pokyn pre frontend; zároveň záložný cieľ presmerovania.
route(?string $name, array|Closure $parameters = [])Pomenovaná routa, na ktorú middleware presmeruje, s jej parametrami — pole alebo closure, ktorá dostane naviazaný subjekt.
url(?string)Absolútna URL alebo cesta, na ktorú middleware presmeruje.
meta(array)Ľubovoľné metadáta, ktoré sa prenesú do DTO.
key(?string)Stabilný identifikátor; inak slug z názvu.
order(?int)Explicitné poradie v rámci toku.
group(?string)Kľúč sekcie pre zoskupený postup.
optional(bool = true)Usmerňuje používateľa bez blokovania dokončenia.
required()Znova označí krok ako povinný (predvolený stav).
translatable(?bool = true)Vynúti (true), vypne (false) alebo automaticky rozpozná (null) preklad názvu a CTA.
dismissible(bool = true)Umožní používateľovi skryť voliteľný krok (vyžaduje store).
completeIf(?Closure) / completeWhen()Pravidlo dokončenia; dostane subjekt alebo null.
excludeIf(?Closure) / excludeWhen()Pravidlo vylúčenia; dostane subjekt alebo null.
for($subject)Naviaže subjekt — tok to urobí za vás.

Každá vlastnosť buildera je zároveň pomenovaným argumentom Step::make() (aj konštruktora), takže krok nadefinujete jediným volaním:

// Every builder property is also a named argument of Step::make()
Step::make(
    title: 'Add a bio',
    cta: 'Write your bio',
    key: 'bio',
    optional: true,
    group: 'profile',
    route: 'profile.bio',
);

Kľúče

Každý krok má stabilný kľúč — nastavíte ho cez key(), inak sa odvodí ako slug z názvu. Pevný kľúč prežije preformulovanie aj preklad, takže frontend, udalosti aj testy sa na krok spoľahlivo odkážu. step() a hasStep() hľadajú len medzi viditeľnými krokmi:

Step::make('Upload Photo')->stepKey();                  // 'upload-photo' — slugged from the title
Step::make('Upload Photo')->key('photo')->stepKey();     // 'photo' — explicit key wins

$flow->step('photo')?->isCompleted();   // look a visible step up by key
$flow->hasStep('photo');                // bool

Poradie

Kroky predvolene zachovávajú poradie pridania. Ak ktorémukoľvek kroku nastavíte order(), tok ich podľa neho zoradí; kroky bez poradia potom nasledujú za zoradenými:

Step::make('Verify email')->order(1);
Step::make('Upload photo')->order(2);

Predikáty a čítanie

$step->isCompleted();      // true when no completeIf rule is set
$step->isNotCompleted();
$step->isExcluded();       // false when no excludeIf rule is set
$step->isNotExcluded();
$step->isOptional();
$step->isRequired();
$step->isDismissible();
$step->isDismissed();      // reads the manager's store; false without one
$step->completedAt();      // ?DateTimeInterface from the manager's store; null without one
$step->stepKey();          // explicit key, or a slug of the title
$step->groupName();        // ?string
$step->routeParameters();  // array — the named route's parameters, resolved against the subject
$step->resolvedTitle();    // ?string — translation keys resolved
$step->resolvedCta();      // ?string

Krok získaný cez tok — steps(), all(), step(), currentStep() — je už naviazaný na subjekt toku, takže jeho predikáty odpovedajú pre tento subjekt.

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.