PDA

Pogčedajte punu verziju : Formulari i validacija


bluesman
07. 06. 2005., 01:37
Ovih dana ponovo radim jedan projekat sa milion formulara. Muka mi je.

Deseti put sam odlučio da napravim neku klasu koja će ne samo da generiše formulare već i da radi validaciju. Pri tom sam ja malo megalomanski krenuo da radim i client i server validaciju, znači da porek standardne provere posle submit, generiše automatski i javascript koji će da proverava određena polja i pre submit. Naravno, što više radiš vidiš da je sve komplikovanije jer nailaziš na određena polja i tipove podataka koji ne mogu tako lako da se automatizuju.

Ideja je da inicijalizujem klasu i dodajem polja tima

$FORM->AddField ($name, $values, $type = 'text', $requied = true, $maxlen = 255)
itd... pa onda:
$FORM->generate();

Da li je neko imao nekih iskustava sa ovim, da li ste radili nešto slično i da li možda imate neki drugi koncept ili nesto?

godza
07. 06. 2005., 02:29
Takodje cu da uradim isto sto i ti hoces, vec dugo se nagovaram da to uradim...

Ali da ovaj moj post ne bude besmislen, reci cu vam ko je to uradio i da to resenje fercera.

Naime radi se o Iliji Studenu, koga cu uputiti na ovaj forum cim se bude pojavio u kancelariji.

Ilija Studen
07. 06. 2005., 08:37
Napravio sam jedano prilično zgodno rešenje, ali daleko od toga da je jednostavno. U pitanju je sistem za generisanje i procesiranje formularan baziran na komponentama.

Komponente nasleđuju BaseComponent klasu i imaju ime, raspon vrednosti i niz apstraktnih metoda (checkRange, checkValue, getComponentCode...). Svaka prava komponenta implementira ove metode.

Lepota ovog sistema je što je užasno fleksibilan i proširiv jer sve leži u nasleđivanju. Tako npr. imamo bazni tekst input. Ništa ne radi, samo vaća kod i vrednost kao string. Međutim, iz njega nasleđujemo Float input, Integer input, Text input i dodajemo kojekakve validacije.

Pošto se sama komponenta brine za serverside validaciju onda se može sastojati i iz više kontrola. Npr. datum pomoću 3 select boxa, kompleksna WYSIWYG editor itd.

Dalje, tu je Form klasa koja se brine o printanju formu, validaciji i skupljanju vrednosti. Doda joj se niz komponenti, a onda pozove renderForm funkcija. Kada je potrebno skupiti sve vrednosti samo se kaže collectValues koja vrati FALSE ukoliko postoji greška.

Problem je u tome što sam i ja već ispustio sve detalje ovog sistemčića jer je ušniran u jedan od starijih projekata i nemam ga u "samostalnom" obliku. Par puta mi je zatrebao, ali nikako da sednem i "izvučem" ga.

Inače, koncept je jako dobar, a forme se prave dok kažeš keks...

dinke
07. 06. 2005., 09:55
Pogledaj pear::HTML_QuickForm

http://pear.php.net/package/HTML_QuickForm

A dokumentaciju imas ovde (http://pear.php.net/manual/en/package.html.html-quickform.php) .

Licno je nisam koristio preterano jer ja preferiram da radim kroz smarty, a takodje 2 godine sam na stalnom poslu koristio neki "rotella framework" koji je slicne stvari odradjivao sam. No video sam jako fine primere koriscenja HTML_QuickForm-a u knjizi Harry Fuecka pa svakako pogledaj da li bi ti ovo moglo odgovarati.

Bojan Zivanovic
07. 06. 2005., 14:46
Evo, baš ovih dana sam krenuo i ja da radim na problemu generisanja formi...
Uzeo sam webform klasu (deo WebObjects klasa koje razvija vladeck), proširio je i može da radi ok posao, jedino što nema uradađenu validaciju... Ali ima vremena :)
Ilija, jel ima šanse da podeliš kod te tvoje klase? .

Ilija Studen
07. 06. 2005., 17:31
Drage volje, samo ne u neko skorije vreme pošto baš sad imam jedan prilično tesan rok (englezi imaju super reč za to - deadline, ali bukvalno :( ), a i jednu malo glomazniju aplikaciju privodim kraju. Možda krajem meseca, mada ništa ne obećavam... Ima tu dosta posla, posebno ako hoću da napravim smislen paket sa relativno dobrom dokumentacijom.

Bojan Zivanovic
07. 06. 2005., 18:10
Ma opusteno, mislio sam samo da bacim oko... Nije hitno, ne zuri ;)

nixa
09. 06. 2005., 01:14
to bi bilo generalno jako dobro da se uradi ,jer mene generalno sve sto ima vise od 4 objekta u formi mrzi da radim neku extra validaciju ( php i js u isto vreme) ,a ovako bi bilo lagano :)