Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa walidacji formularza - porady
Blame
post
Post #1





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Ostatnio wgłębiam się w programowanie obiektowe i postanowiłem sobie napisać klasę sprawdzającą pola formularza. O ile z samym sprawdzaniem nie mam problemu, to po prostu filtry i wyrażenia regularne to już ze zwracaniem wartości tak. A konkretnie chodzi mi o poinformowanie użyszkodnika o źle wprowadzonych danych. Na razie po prostu albo zwracam ciąg albo FALSE, jednak to wiąże się z następnymi if'ami czyli większą ilością kodu. Przeczytałem gdzieś, że można użyć wyjątków. Czy to się sprawdzi? Przyznam, że moja wiedza związana z wyjątkami to ledwie skutek googlowania od dwóch dni. Proszę więc o odpowiedź na moje pytanie i ew. nakierowanie mnie w temacie.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tak, wyjątki mogą się tutaj sprawdzić bardzo dobrze m.in. dlatego, że mogą one zawierać sporo innych danych - nie tylko treść błędu.
Jeżeli zaś chodzi o wyświetlanie błędów, to tutaj dużo zależy od tego jak budujesz formularze na stronie... czy jest to ręcznie robione czy jakimś generatorem.

PS. W Symfony jest całkiem fajny "subframework" formularzy - i związane z tym walidatory.
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli jesteśmy przy frameworkach to fajny jest Formo w Kohanie. Kapitalnie upraszcza budowę i obsługę formularza. Zwracanie błędów walidacji przy jego użyciu to dosłownie bajka smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


A jeśli chcesz robić własną, to coś w stylu:
  1. function waliduj_data($date,$czypusty=0){
  2. if(!empty($date)){
  3. $tdate = split('[^0-9]',$date);
  4. if(checkdate((int)$tdate[1],(int)$tdate[0],(int)$tdate[2])){
  5. $data = mktime(0,0,0,$tdate[1],$tdate[0],$tdate[2]);
  6. }else{
  7. $error = 'niepoprawna data';
  8. }
  9. }else{
  10. if($czypusty==1){$error = 'wpisz datę';}
  11. }
  12. $tablica[1] = $data;
  13. $tablica[2] = ' value="'.$date.'"';
  14. if(empty($error)){
  15. $tablica[0] = TRUE;
  16. }else{
  17. $tablica[0] = FALSE;
  18. $tablica[3] = $error;
  19. }
  20. return $tablica;
  21. }
- zwracana jest tablica, która zawiera 0 - TRUE/FALSE w zależności od poprawności walidacji, 1 - wpisaną datę jeśli jest błędna lub uniksowy znacznik czasu, gdy data jest poprawna, 2 - value do wykorzystania w inpucie, 3 - komunikat błędu. Można dodać także klasę CSS i oczywiście interfejs Twojej klasy nie musi ograniczać się do wartości domyślnych lub możesz w ogóle komunikaty błędów ustawiać gdzie indziej i w inny sposób, np. zapisywać to w szablonach formularzy.

Najlepiej bym to widział tak, że tworzysz formularz np. w XML, gdzie dla każdego inputa ustawiasz typ, opcje, komunikaty błędów etc. a resztę załatwia PHP.
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Gdy nie używałem formo i podobnych to wyglądało to tak, że tworzyłem pewien obiekt. Zawierał on tablicę z danymi formularza (domyślnymi lub pobranymi z bazy - jeśli to była edycja) i tablicę lustrzaną dla nich, które przechowywały ewentualne komunikaty błędów. Jeśli ta ostatnia była pusta po etapie walidacji to szedł update lub insert. Jeśli nie była pusta to zawartość pól (najczęściej już nieco poprawiona po walidacji) wracała z powrotem do formularza i wyświetlałem errory w zależności od upodobań albo nad formularzem, albo bezpośrednio przy polach ze znalezionymi błędami. CSS ładnie to "kolorował". Formo mi to jeszcze nieco ułatwiło, ale ogólna zasada jego działania jest identyczna.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Blame
post
Post #6





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Dzięki chłopaki, oczywiście się odwdzięczam. Na razie spróbuję tworzyć tablicę z błędami. Nie wiem czy rozwiązanie to się sprawdzi, ale myślę że warto to sprawdzić. Jeszcze jedno, czy macie jakieś pomysły na temat funkcjonalności owej klasy, które często są przydatne podczas pisania?

Ten post edytował Blame 7.01.2010, 15:38:06


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:39