---
title: "Deklaratívne podmienky — Onboarding for Laravel | Roundly"
description: "completeWhenFilled(), completeWhenTrue(), completeWhenHas() a ich náprotivky na vylúčenie — pravidlá na jeden riadok bez closures."
url: https://roundly-consulting.com/sk/open-source/navody/onboarding-for-laravel/deklarativne-podmienky
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)

# Deklaratívne podmienky

Na bežné prípady closure nepotrebujete. Tieto pomocníky prečítajú hodnotu z naviazaného subjektu a skompilujú sa do rovnakých pravidiel completeIf / excludeIf, takže znesú subjekt null a zostávajú úplne bezstavové:

```php
Step::make('Upload photo')->completeWhenFilled('avatar_path');     // filled() on the attribute (dot paths supported)
Step::make('Verify email')->completeWhenTrue('email_verified_at'); // truthy attribute, or a public no-arg method
Step::make('Invite team')->completeWhenHas('teams');               // a non-empty relation value, collection, or array
```

| Metóda | Účel |
| --- | --- |
| `completeWhenFilled($attribute)` | filled() na atribúte; podporuje bodkové cesty. |
| `completeWhenTrue($attributeOrMethod)` | Výsledok verejnej metódy bez argumentov (nikdy nie accessora Attribute), inak atribút, je pravdivý. |
| `completeWhenHas($relation)` | Hodnota relácie je model, neprázdna kolekcia či pole, alebo akákoľvek hodnota okrem null. |
| `excludeWhenFilled($attribute)` | Kontrola z completeWhenFilled() použitá na vylúčenie. |
| `excludeWhenTrue($attributeOrMethod)` | Kontrola z completeWhenTrue() použitá na vylúčenie. |
| `excludeWhenHas($relation)` | Kontrola z completeWhenHas() použitá na vylúčenie. |

Pri subjekte null vráti každý pomocník false — krok nie je dokončený ani vylúčený.

## Metóda má prednosť pred atribútom

completeWhenTrue() uprednostní verejnú metódu bez argumentov s daným názvom pred atribútom. Metóda, ktorá vyžaduje argumenty, sa nezavolá a berie sa ako prázdna hodnota. Chránenú metódu — a na Eloquent modeli ani accessor Attribute, napríklad protected function verified(): Attribute, verejný či chránený — balík nikdy nezavolá: prečíta namiesto nej atribút ($subject->verified), takže rozhoduje hodnota accessora, nie objekt Attribute:

```php
// A public no-arg method wins over an attribute of the same name
Step::make('Subscribe')->completeWhenTrue('hasSubscription');   // calls $subject->hasSubscription()
```

## Relácie nikdy nespúšťajú dotaz

completeWhenHas() skontroluje už načítanú alebo lenivo načítanú hodnotu relácie — ->exists() za vás nespustí, pretože by to predpokladalo Eloquent. Ak potrebujete explicitný dotaz, oprite completeWhenTrue() o metódu modelu alebo použite closure:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Onboarding\Traits\GetsOnboarded;

class User extends Model
{
    use GetsOnboarded;

    public function hasTeam(): bool
    {
        return $this->teams()->exists();
    }
}

// completeWhenHas() never queries — back an explicit query with a method
Step::make('Invite team')->completeWhenTrue('hasTeam');
```

## Vylúčenie

Rovnaká sada existuje aj na strane vylúčenia. Vylúčený krok zmizne pre daný subjekt zo steps(), z percent aj z dokončenia — každý vidí len to, čo sa ho týka:

```php
Step::make('Connect billing')->excludeWhenTrue('is_free_plan');     // hidden for free-plan users
Step::make('Upload photo')->excludeWhenFilled('social_avatar_url'); // already has an avatar elsewhere
Step::make('Create workspace')->excludeWhenHas('workspaces');       // joined an existing workspace
```

completeWhen() a excludeWhen() sú aliasy completeIf() a excludeIf() pre jednotný štýl pomenovania:

```php
Step::make('Verify email')->completeWhen(fn (?User $user) => $user?->hasVerifiedEmail());
Step::make('Connect billing')->excludeWhen(fn (?User $user) => $user?->is_guest);
```

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