User Warning: Form was submitted but there are no associated handlers
- David Grudl
- Nette Core | 7780
Formuláře od verze 3.1.4 kontrolují, zda mají nějaký obslužný
handler, tj. je zavěšené volání metody pro onSuccess
,
onSubmit
nebo onClick
na tlačítku:
$form->onSuccess[] = [$this, 'formSucceeded'];
Pokud chybí, vyhodí varování
Form was submitted but there are no associated handlers
.
Důvod je ten, že se stává, že programátor, zejména začátečník, zapomene asociovat obslužný handler a pak složitě pátrá, proč odesílání formuláře nefunguje. Tohle by mu mělo usnadnit vývoj.
- Marek Bartoš
- Nette Blogger | 720
Upozornění je to fajn, ale myslím že začátečník si bude pořád říkat, co má být ten associated handler a bude muset sám zjistit, jak problém vyřešit. Moc by se mi líbilo, kdyby Nette v chybách vysvětlovalo jaká událost nastala, co je v ná za problém a jak ji vyřešit. Momentálně je třeba si řešení domyslet.
Context: Form with ID product-form was submitted.
Problem: Form has no handler to process it on success.
Solution: Add callback to Form->onSuccess[] or Form->onSubmit[] to process sent data.
Editoval Marek Bartoš (29. 8. 2021 15:01)
- David Grudl
- Nette Core | 7780
Ono to vysvětlení obvykle nejde udělat jednou větou, proto jsem vlastně založil tohle vlákno, aby se hláška dala vygooglit a tam najít řešení.
- uživatel-p
- Člen | 553
Hm i když jsem začátečník od roku 2014, tak se mi zrovna minulý týden
podařilo přesně tuhle botu udělat.
Konkrétně jsem měl strukturu takovou, že jsem dělal formulář jako
komponentu a tedy jsem měl více navěšených onSuccess metod.
Jednu, která se v komponentě starala o zpracování dat a jednu, která se
v Presenteru starala o přesměrování po úspěšném dokončení.
Problém byl, že jsem navěštil tu událost z Presenteru, ale zapomněl jsem navěštit zpracování dat, takže redirect s flashMessage proběhl v pohodě, ale data se nezpracovala. Divil jsem se a docela dlouho na můj vkus jsem hledal kde je chyba a proč se mi nevolá update nad databází.
Když jsem si všiml, že mi tam chybí navěšení události, tak jsem se sám divil, že po takové době, kdy jsou formy denní chleba jsem udělal takovou chybu. A to, že to formuláře tvořím často přispělo taky k tomu, že jsem tuto konkrétní chybu nehledal.
Za mě rozhodně +.
Můj problém to sice neřeší, jelikož by to bralo, že mám vše ok,
jelikož by to bralo jako navěšenou událost z presenteru starající se
o přesměrování, ale i tak si myslím, že to je dobrý nápad.
- Michal Kumžák
- Člen | 106
Problém byl, že jsem navěštil tu událost z Presenteru, ale zapomněl jsem navěštit zpracování dat, takže redirect s flashMessage proběhl v pohodě, ale data se nezpracovala. Divil jsem se a docela dlouho na můj vkus jsem hledal kde je chyba a proč se mi nevolá update nad databází.
To by ti v tomto případě, ale tato úprava nepomohla, jestli sem to pochopil správně.
- uživatel-p
- Člen | 553
Michal Kumžák napsal(a):
Problém byl, že jsem navěštil tu událost z Presenteru, ale zapomněl jsem navěštit zpracování dat, takže redirect s flashMessage proběhl v pohodě, ale data se nezpracovala. Divil jsem se a docela dlouho na můj vkus jsem hledal kde je chyba a proč se mi nevolá update nad databází.
To by ti v tomto případě, ale tato úprava nepomohla, jestli sem to pochopil správně.
Nepomohla. Proto jsem taky psal:
Můj problém to sice neřeší, …
Jen jsem chtěl poukázat na to, že to je dobrý nápad, jelikož když se to může stát někomu, kdo s Nette pracuje 7 let, tak se to určitě stává nováčkům.
Editoval Polki (30. 8. 2021 16:37)
- David Grudl
- Nette Core | 7780
U GET formulářů by se to asi kontrolovat nemuselo. Proč tam handler cpe parametr?