![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, od wczoraj zaprzyjaźniam się z CI
Widziałem tutaj niezbyt pozytywne opinie na temat tego FW. Więc zaznaczam, że nie jest to mój wybór, po prostu wymaganie z góry ![]() Chciałbym się zapytać czy mam prawidłowe podejście: Controller
Model
Views view_register.php
view_result.php
Dzięki za góry za wszelkie porady Ten post edytował Reptile ReX 23.06.2011, 13:17:42 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Podejście dobre. Ja nie znam osobiście dobrze tego FW, cały czas się uczę, ale akurat apropo tego mogę conieco napisać.
Po pierwsze, niepotrzebnie sprawdzasz dwa razy bazę danych. Chodzi mi o login i o adres e-mail. Wystarczyło to zrobić jednym zapytaniem (oczywiście w modelu):
W tedy sprawdzasz instrukcją warunkową czy są rekordy i jeśli tak, to sprawdzasz czy podane dane z $_POST są takie same jak te z bazy. I w tedy już możesz sobie zrobić z danymi co Ci się podoba. Zawsze jedno zapytanie do DB mniej. Ja na początku do połączeń z bazą danych też korzystałem z wielu różnych modeli i funkcji w nich, ale teraz napisałem sobię jedną bibliotekę, i do funcki w niej zawartych wysyłam wszystkie dane, np: nazwa tabeli, co i wg czego wybierać, ewentualne limit oraz start - zwraca mi tablicę z której sobie wszystko odczytuję jak chcę. Co do sprawdzania formularza, w instrukcji warunkowej lepiej wpisać
Teraz przynajmniej masz pewność, że jeśli coś pójdzie nie tak, to zawsze najpierw sprawdza czy funkcja zwróciła TRUE, jeśli FALSE lub 0 lub cokolwiek innego (wiem, że mało możliwe ale zawsze jakieś zabezpieczenie - warto bo nie są duże zmiany w kodzie) to zrobi to co w else. PS. Jeśli odezwie się ktoś wyższy rangą i się przyczepi do tego postu, olej ten post i słuchaj innych, oni pewnie będą mieli lepsze pomysły ![]() Ten post edytował adbacz 23.06.2011, 14:03:20 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Takie dane jak $data['error'] = '<p>W bazie danych istnieje już taki użytkownik</p>'; powinieneś dawać w widoku a nie kontrolerze.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
@up
Hmm jak tego dokonać? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Przykładowo dla przykładu na przykład przypisz to tego jakąś wartość, np. boolean FALSE. A w widoku takie coś:
Jeszcze prościej sie chyba nie da napisać. Ten post edytował adbacz 23.06.2011, 15:42:24 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 306 Pomógł: 42 Dołączył: 25.03.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Takie dane jak $data['error'] = '<p>W bazie danych istnieje już taki użytkownik</p>'; powinieneś dawać w widoku a nie kontrolerze. Niby dlaczego? Co stoi na przeszkodzie żeby w kontrolerze używać komunikatów? W Ruby on Rails tak się robi np. -------------------- Strony WWW: http://arscreo.pl
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Od html jest widok a nie kontroler, po to się stosuje mvc aby był porządek.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem to na takiej zasadzie:
Widok:
Ale obawiam się, że przy większych projektach będzie to ciężkie do ogarnięcia, macie jakieś pomysły ? |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Model walidacji zwracający tablicę błędów.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie, trochę mieszania by było w taki sposób. Ale wpadłem na coś takiego. Czy nie lepiej robić te błędy standardowo w controlerze ale pobierać informacje o tych błędach z plików językowych?
Ja osobiście robiąć rejestrację właśnie podczas sprawdzania wprowadzonych danych sam zrobiłem jak autor tematu, że informacje o błędach były zawarte w kontrolerze i dopiero po weryfikacji, gdy nastąpił błąd wysyłane do widoku. Może to nie jest elegancki sposób ale nie trzeba bawić się właśnie w te modele validacji jak napisał mod. i nie ma tyle kodu do sprawdzania czy zmienna istnieje. Można też inaczej, sklejać wszystko do jednej zmiennej. Jeśli wystąpi błąd to przypisać do zmiennej, jeśli jeszcze jeden, dokleić do poprzedniego i w widoku wyświetlać sklejone informacje z kontrolera. Co panowie 'starsi rangą' myślą o tych plikach językowych? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 19.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Powiem szczerze, że też o tym pomyślałem.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie prościej sobie napisać helper do generowania błędów?
Ogólnie lepsza metoda jest dopisanie dodatkowego funkcji do walidacji formularza. http://codeigniter.com/user_guide/librarie....html#callbacks I kłopot z głowy ![]() A żeby widok był widokiem to błędy dać do pakietów językowych I potem ładnie koło pola form_error('pole'); i problem z głowy -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:25 |