Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasy czy dobrze kombinuje?
gandziorz
post
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

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


Witam,
Przez cały czas pisałem funkcje i postanowiłem obrać zmiany na lepsze i wprowadzać się w klasy.
Mam taki mały problem otóż chciałbym zrobić walidację poprzez klasę i ona wzraca mi rodzaj błędy.
Wcześniej robiłem to tak:
  1. <?php
  2. $errors = array();
  3. //imie
  4. if (empty($imie)) {
  5. array_push ($errors, 'puste_imie');
  6. }
  7.  
  8. //nazwisko
  9. if (empty($nazwisko)) {
  10. array_push ($errors, 'puste_nazwisko');
  11. }
  12.  
  13. //ulica
  14. if (empty($ulica)) {
  15. array_push ($errors, 'puste_ulica');
  16. }
  17. (...)
  18. ?>


Teraz piszę klasę rejestracji i walidacja musi być uwzględniona jak dotychczas czyli:
Na stronie:
  1. <?php
  2. $errors = array();
  3. $user = new Register;
  4. $user->check($imie, $nazwisko, $ulica);
  5. $errors = $user;
  6. ?>


W klasie:
  1. <?php
  2. class Register {
  3.    var
  4.        $user;
  5.        $errors;
  6.    function check ($imie, $nazwisko, $ulica, $nrdom, $nrmieszk, $miasto, $kodpoczt1, $kodpoczt2, $wojewodztwo, $telkom, $teldom1, $teldom2, $email, $rczlon, $login, $haslo, $haslo2, $agree) {
  7.            if (empty($imie)) {
  8.                array_push ($errors, 'puste_imie');
  9.            }
  10.            if (empty($nazwisko)) {
  11.                array_push ($errors, 'puste_nazwisko');
  12.            }
  13.  
  14.            if (empty($ulica)) {
  15.                array_push ($errors, 'puste_ulica');
  16.            }
  17.  
  18.    } //zakonczenie funkcji sprawdzajacej
  19. } //zakonczenie klasy
  20. ?>

To początek klasy, więc chodzi mi tylko o to czy do $errors na stronie zostaną dopisane wartości z klasy czyli jak nie ma imienia to: 'puste_imie' itp.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Powinieneś zrobić raczej klasę user z metodą register...

A jeśli chodzi o kombinowanie:

  1. <?php
  2. function check ($imie, $nazwisko, $ulica, $nrdom, $nrmieszk, $miasto, $kodpoczt1, $kodpoczt2, $wojewodztwo, $telkom, $teldom1, $teldom2, $email, $rczlon, $login, $haslo, $haslo2, $agree) {
  3.           if (empty($imie)) {
  4.               array_push ($errors, 'puste_imie');
  5.           }
  6. ?>

Nie możesz podstawić tablicy z własnościami i sprawdzać pętlą wartości...?
Go to the top of the page
+Quote Post
gandziorz
post
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

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


No to zrobię klasę user z możliwością logowania, rejestracji, wylogowania, edycji.
Teraz pytanko odnośnie walidacji.
Robię stronę w smarty.

W pliku "strona" zakładam że mam coś takiego:
  1. <?php
  2. $user = new Register;
  3. $user->check($imie, $nazwisko, $ulica);
  4. $errors = $user;
  5.  
  6. $smarty->assign ('errors', $errors);
  7. $smarty->display ('dolacz.tpl');
  8. ?>

W pliku dolacz.tpl mam:
  1. <?php
  2. {if $errors}
  3. <ul style="color:red">
  4. {section name=e loop=$errors}
  5. {if $errors[e] eq 'puste_imie'}
  6. <li>Prosz&#281; wpisać imię!
  7. {/if}
  8. {if $errors[e] eq 'puste_nazwisko'}
  9. <li>Prosz&#281; wpisać nazwisko!
  10. {/if}
  11. {if $errors[e] eq 'puste_ulica'}
  12. <li>Prosz&#281; wpisać ulicę!
  13. {/if}
  14. {/section}
  15. </ul>
  16. {/if}
  17. ?>


I wiadomo że jak errors (array) będzie miało dopisane "puste_imie" to na stronie wyświetli błąd Proszę wpisać imię!
Jak pisałem to za pomocą funkcji to działało jednak w klasie nie mogę dopisać żadnych wartości i na stronie wyświetla się błąd:
Fatal error: Cannot use object of type Register as array in C:VertrigoServwww\templates_c%%57^57F^57F5B932%%dolacz.tpl.php on line 43

Ten post edytował gandziorz 12.06.2009, 15:08:41
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Przecież przypisujesz OBIEKT do zmiennej, którą traktujesz jak tablicę...

Gdybyś dodał obsługę interfejsu Iterator, to pewnie by poszło.

  1. <?php
  2. $errors = $user;
  3. ?>

Nie przypisujesz tu przecież tablicy z błędami, tylko całą klasę użyszkodnika.
Go to the top of the page
+Quote Post
gandziorz
post
Post #5





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

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


Okej dałem radę wystarczyło trochę pobawić się jeszcze w pliku tpl i gra gitara (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 06:55