Výber toku pre subjekt
Namiesto ručného vetvenia zaregistrujte raz resolver, ktorý subjektu priradí kľúč toku:
Onboarding::resolveUsing(fn ($subject) => $subject?->isAdmin() ? 'admin' : 'default');
Onboarding::for($user); // the resolved Flow, bound to $user
Onboarding::resolveFor($user); // the same
Onboarding::resolveFor($user, 'team'); // the same, falling back to "team" instead of "default"
$user->resolvedOnboarding(); // the same as Onboarding::for($user), from the GetsOnboarded trait- Resolver dostane subjekt — Model, Authenticatable alebo null — a vráti kľúč toku alebo null.
- Onboarding::for($subject) bez kľúča — aj resolveFor() — vráti kópiu toku podľa resolvera naviazanú na subjekt, ak je daný kľúč zaregistrovaný.
- Ak resolver vráti null alebo neznámy kľúč, použijú predvolený tok — alebo kľúč odovzdaný ako druhý argument resolveFor(); null vrátia, len ak neexistuje ani jeden.
- flush() zruší resolver spolu so zaregistrovanými tokmi.
Resolver verzus predvolený kľúč
Každé miesto, ktoré číta tok subjektu bez kľúča, sa najprv pýta resolvera: $user->onboarding(), metódy modelu (hasCompletedOnboarding(), isOnboarding(), onboardingProgress(), nextOnboardingStep(), dismissOnboardingStep()) aj middleware onboarding. Pri modeli sa pri odpovedi null alebo neznámom kľúči použije jeho defaultOnboardingKey(). Explicitný kľúč — $user->onboarding('admin') či onboarding:admin — má vždy prednosť:
class User extends Model
{
use GetsOnboarded;
// the fallback when the resolver answers null or an unknown key
public function defaultOnboardingKey(): string
{
return $this->onboarding_flow ?? 'default';
}
}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 kryptomienOdoslaní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.