Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odbiór formularza z wykorzystaniem MVC?
Pytajnik0
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.02.2012

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


Witajcie,

od pewnego czasu w wolnych chwilach piszą dość rozbudowany serwis dla własnych potrzeb, staram się pisać kod obiektowo z wykorzystaniem MVC.

Przechodząc do problemu, otóż układ folderów aktualnie wygląda tak -

  • class
  • themes
  • images

W głównym folderze trzymam kontrolery, tutaj rodzi się problem, ponieważ w przypadku wczytania formularza ( warstwa widoku) z folderu themes, nie za bardzo wiem czy dobrym rozwiązaniem jest odbieranie tych danych i zapisywanie ich do bazy również w tym pliku, czy to już powinno się znaleźć w jakieś klasie? Rozumiem, że warstwa widoku nie powinna mieć wglądu w model, dlatego może lepszym rozwiązaniem będzie wrzucenie tego kodu do klasy i w przypadku wysłania formularza odbierania tych danych w kontrolerze?

Czekam na wasze sugestie, pozdrawiam.

Ten post edytował Pytajnik0 29.02.2012, 14:00:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


ok a gdzie masz modele?

Jak powinno wyglądać wyświetlenie i wysłanie formularza wg MVC:

Wyświetlenie:

USER -> KONTROLER -> WIDOK_FORMULARZA -> WYŚWIETLAMY

Wysłanie:

USER -> KONTROLER -> MODEL -> KONTROLER -> PRZEKIEROWANIE

Zatem jak widać w przypadku wyświetlania kontroler ma załadować widok formularza i go wyświetlić. Jeśli chodzi o wysyłanie to wygląda to tak, formularz idzie postem do kontrolera, kontroler sprawdza (waliduje) dane, jeśli są ok przekazuje do modelu, który wrzuca je do bazy (na przykład) a następnie robisz przekierowanie na jakąś stronę lub odpalasz widok (może być ten sam) z informacją że dodano (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Pytajnik0
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.02.2012

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


Z tym, że kod odpowiedzialny za dodawanie np. nowego użytkownika trzymać w klasie i wywoływać odpowiednią metodę w kontrolerze po ewentualnej walidacji?

Ten post edytował Pytajnik0 29.02.2012, 14:24:10
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Tak - ta klasa o której wspominasz to właśnie jest model...

kontroler powinien mieć metodę "dodajUzytkownika"

w tej metodzie powinno być sprawdzane czy został wysłany formularz czy ktoś po prostu odpalił tą metodę z przeglądarki.

Jeśli odpalone zostało z przeglądarki to wyświetlasz formularz tylko w tej metodzie.

Jeśli został wysłany formularz to kontroler w tej metodzie powinien zwalidować dane, powołać do życia model (czyli klasę odpowiedzialną za zarządanie danymi - czyli wrzucanie i wyciąganie ich z bazy) wywołać odpowiednią metodę modelu, przekazując jej dane usera. Metoda modelu powinna po porstu zrobić inserta do bazy. Po zakończeniu tej metody modelu kontroler może przekierować na jakąś stronę lub wyświetlić coś (załadować jakiś plik z szablonem)

Czyli musisz mieć podział conajmniej na:

Kontroler - ma się zajmować odbieraniem requestów od usera, ma posiadać metodę na każdy request (z czego może ta metoda być odróżniana na zasadzie czy wysłano POST). Metody kontrolera nie powinny nic robić w bazie danych, powinny sprawdzać czy dane wymieniane w requestach są ok, przekierowywać i wywoływac widoki (najprościej mówiąc - ładować opdowiednie pliki z szablonami). Kontroler musi mieć dostęp do modeli.

Model - ma za zadanie pobeirać, edytować i usuwać dane z bazy danych, jego metody powinny wykonywać jakieś konkretne akcje np. "rejestrujUżytkownika" itp. Model powinien być ładowany w kontrolerze i widok nie powinien z niego korzystać. Kontroler pobiera dane z modelu i przekazuje do widoku lub kontroler pobiera dane z requestu i przekazuje do modelu.

Widoki - w uproszczeniu skrypty z szablonami, html ze wstawkami PHP, który ładujesz odpowiednio w kontrolerze dla danych pobranych na przykład z modelu.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





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

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


1. Kontroler nie może sprawdzać poprawności danych, bo do tego potrzebna jest wiedza o samych danych - to jest zadanie dla modelu.
2. Widok musi korzystać z modelu, a kontroler nie powinien się specjalnie bawić w przekazywanie danych z modelu do widoku.
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: 25.08.2025 - 06:39