![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zablokowani Postów: 46 Pomógł: 0 Dołączył: 12.01.2006 Ostrzeżenie: (10%) ![]() ![]() |
O MVC na tym forum i w publikacjach elektronicznych oraz tradycyjnych napisano juz wiele. Jednak co publikacja, to nowa implementacji wzorca MVC. Widzialem juz projekt, w ktorym pobranie danych odbywalo sie w kontrolerze, a w modelu jedynie ich przechowywanie.
Mam taki problem. Nigdzie nie moge doczytac czy wzorzec MVC bierze cos takiego pod uwage, jak kilka modeli i widokow? Wiem, ze kontrolerow moze byc kilka. A co z modelami i widokami? I jak to zakodowac obietkowo? Problem: na podstawie url: index.php?akcja=newsy kontroler wybiera model Newsy, w ktorym pobierane sa wiadomosci z bazy danych. Nastepnie zostaja przeslane do dwoch widokow. Pierwszy to widok 'xml', ktory w ktorym generuje plik kanalu rss, a drugi widok to 'http', ktory uruchamia szablon Smarty z newsami. Jak to zakodowac obiektowo? Czy tak jak zademonstrowalem to ponizej?
(IMG:http://forum.php.pl/uwaga.gif) poprawiam trzecie upomnienie. za czwartym będzie ostrzeżenie --- nospor I od razu nasuwaja sie pytania: 1. Jak zrobic, aby liczba widokow byla generowana dynamicznie (nie zawsze beda 2 widoki, moze byc 1,2,3 lub wiecej widokow) 2. Jak skonstruowac klase akcji? 3. Czy jedna akcja to pobranie modelu i przkazanie go widokowi? A raczej, to widok sobie pobiera model. 4. Co z danymi przeslanymi z formularza? Trafia do modelu i zostaje dopisane do bazy danych lub pliku xml; widok nie jest potrzebny. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
eMartio: wrecz odwrotnie - kontroler jest jeden, a widoków i modeli wiele :]
A żeby nie zrobic zbytniego syfu w klasie będącej kontrolerem, rozdziela się jego zadania na podrzędne klasy (zwane akcjami). Tak na prawde to, czy Akcje zaimplementujesz jako jakąś metodę kontrolera (vide cakePHP) czy oddzielną klasę (mojavi?) zależy od Ciebie. Widok zaś to nie koniecznie tylko xml/html. Widokiem to po prostu to co wcześniej nazwałbyś "plikami szablonów". Więc odpalasz kontroler, który na podstawie URLa decyduje co zrobić(akcja). Operuje więc na modelu (select,update,insert,delete) i wyświetla wynik (np. smarty). Chodzi po prostu oto, by nie pchać w jedno miejsce wymieszanych ze sobą instrukcji sql, operacji na danych oraz htmla. Rozdzielenie tego jest podstawą. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 11:52 |