Pořadí callbacků Click a onValidate
- thunderbuff
- Člen | 164
Ve formuláři mám více submitů. Jeden uloží data o uživateli do databáze, druhý submit by měl celý formulář „zahodit“ a do databáze uložit nějaké defaultní hodnoty. Kód vypadá takto:
Továrnička v presenteru pak vypadá takto:
Potíž nastane ve chvíli, kdy kliknu na tlačítko ‚Cancel and drop changes‘. Před callbackem CreateOrEditUserForm::cancel se totiž volá CreateOrEditUserForm::validateForm. V případě, že do formuláře napíšu nesmysly mi to místo provedení „cancel“ vrátí formulář s chybami. Jak z toho ven? Lze nějak zařídit, aby se validace volala až po clicku?
Editoval thunderbuff (21. 8. 2012 17:41)
- Tomáš Votruba
- Moderator | 1114
Přijde mi divné dávat DI container do továrničky na formulář, ale snad máš své důvody. Pokud ne, zkus stejný výsledek dosáhnout v sandboxu, kde to půjde o poznání lépe.
Jen jsem chtěl podotknout, že formuláři stačí předat translator a o překlad už se postará.
- thunderbuff
- Člen | 164
@castamir: díky!
Schmutzka napsal(a):
Přijde mi divné dávat DI container do továrničky na formulář, ale snad máš své důvody. Pokud ne, zkus stejný výsledek dosáhnout v sandboxu, kde to půjde o poznání lépe.
Žádné zvláštní důvody nemám, jen mi to přišlo praktické. Co přesně myslíš formulací „Pokud ne, zkus stejný výsledek dosáhnout v sandboxu“?
Editoval thunderbuff (21. 8. 2012 23:30)
- Filip Procházka
- Moderator | 4668
Opravu je to hrozné :) Ukážu ti jak to udělat lépe.
Nejprve upravíš formulář, aby přijímal konstruktorem konkrétní služby, nikoliv celý DIC
Potom si nadefinuješ továrničku v DIC
A potom ji použiješ
Takhle to vypadá lépe ne? ;) Bez magie.
Editoval HosipLan (22. 8. 2012 9:38)
- David Grudl
- Nette Core | 8254
Úplně bez magie to není, stále tam straší context. Řešil bych to spíš takto.