Ahoj, v aplikaci jsme potřebovali vyřešit vícekrokovou registraci.
Napadlo mě použít Kdyby\Event a jednotlivé formuláře pomocí nich
provázat a celou logiku (posloupnost kroků) ovládat z listenru. Řešení
jsem považoval za geniální až do doby než mi začalo vrtat hlavou, jestli
je v pořádku Listeneru, de facto modelové třídě, předávat UI\Component.
Na UI\Component potom volám redirect('nextStep')
. Jakmile
komponentu na dalším kroku potvrdím, vyvolám údálost na které zase
poslouchá ten samý listener a provede se metoda, která přísluší
danému kroku.
Elegantní je to v tom, že si můžu lehce přehazovat kroky a proces registrace snadno upravovat. Nicméně se nemůžu zbavit pocitu, že je to prasárna.
This question was answered by Filip Procházka, you can jump directly to the answer
Manipulace čímkoliv z listeneru je naprosto v pohodě (tedy i komunikace komponent). Redirect v listeneru ovšem rozhodně není v pohodě. Přijatelné je to pouze v callbacku eventu a to pouze v případě, že za ním v řadě nejsou žádné listenery.
Ovšem pokud víš co děláš a jsi ochoten přijmout důsledky, tak to tak klidně udělej :)