---
title: "Definovanie krokov — Onboarding for Laravel | Roundly"
description: "Skladajte kroky s názvom, CTA, cieľmi, metadátami, kľúčmi a poradím; o dokončení a vylúčení rozhodujú closures."
url: https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel/kroky
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Onboarding for Laravel](https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel.md)

# 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:

```php
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:

```php
// 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. Uložené dokončenia a skrytia sa viažu na subjekt a kľúč kroku, takže kľúč, ktorý majú dva toky, platí v oboch — pozrite si Perzistencia. step() a hasStep() hľadajú len medzi viditeľnými krokmi:

```php
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:

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

## Predikáty a čítanie

```php
$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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel.md)
