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

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

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 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 metódy bez argumentov, 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í 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:

// A 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:

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:

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:

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

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.