Postupné načítání formuláře
- ch4rli3
- Člen | 6
PHP 5
Nette: 2.0.10
Zdravím ve spolek.
Pomalu ale jistě se seznamuju s NETTE a jak jinak to udělat než si vymyslet
a napsat nějakou jednodušši aplikaci. Nyní řeším jeden problém, nevím
ani jestli je to vůbec sémanticky správně. Jde o následující:
V databázi mám tabulku lokalit se strukturou id, mesto, ulice, cp
Když chci přidat klienta do databáze tak mu chci vybrat lokalitu, ale ay to
bylo přehledné tak nejdříve vyplním údaje o klientovi a mám tam pouze
select ve kterém mám možnost vybrat město. Po vybrání města, potřebuju
aby se zobrazil další select pouze s ulicemi daného města a po vybrání
ulice by se měl zobrazit 3. select s čisly popisnými a po řádném
vyplnění by se to mělo uložit do databáze.
Aktuálně se to snažím řešit tak že mám 3 formuláře:
createComponentClientForm, createComponentClientFormStreet a
createComponentClientFormCp
každý formulář má své view
createComponentClientForm je na $form->onSuccess[] zpracováván funkcí clientFormAccepted(Form $form) – v této funkcni se naplní globální proměnná $this->clientInfo hodnotami z formuláře a ověří se jestli kleint není už zavedený – pokud je zavedený, tak se vyhodí hlášení a pokud není zavedený tak se nastaví view na ulice kde se vykresluje formulář createComponentClientFormStreet a z proměnné $this->clientInfo se předvyplní již vyplněná pole, přidá se select pouze s ulicemi z daného města.
Tohle vše funguje tak jak si představuju. Problém ovšem nastává v okamžiku, kdy vyberu ulici a chci pokračovat k číslu popisnému. V ten okamžik se to má zpracovávat funkcí clientFormStreetAccepted(Form $form) ale místo toho dostanu chybu z createComponentClientFormStreet() – tudíž se to nezpracovává správně.
V první řadě se chci zeptat zda má myšlenka je vůbec správná jestli to tak může fungovat. Pokud ano tak co může způsobit že z prvního kroku na druhý to projde bez problémů a a z druhého na třetí se to sekne. Přitom je to napsané úplně stejně a mají se provést stejné operace.
Předem díky za odpověď
Editoval ch4rli3 (14. 6. 2013 14:52)