![]() |
![]() |
![]() ![]()
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: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W niektórych sytuacjach taką klasę stworzyć niestety trzeba by nie wpinac PDFów w akcji. Kiedy output to html/text/rss można ten krok oczywiście pominąć, nie mniej jeśli w gre wchodzą bardziej fantazyjny output klasa pośrednicząca jest dobrym rozwiązaniem.
Przykład, który został podany wcześniej nie jest do końca trafny - to w dalszym ciągu jest HTML więc nie ma po co tworzyć klasy pośredniczącej (tym bardziej sztywno zawierającej smarty). Myślę, że dobrym przykładem może być Mojavi - gdzie są różne metody obsługi widoku od PHPView oraz PHPTalView przez SmartyView po XSLTView. Klasa widoku dziedziczy z określonego typu widoku (powiedzmy PHPView) i przekazuje atrybuty do szablonu. W chwilach gdy żadna akcja nie jest wykonywana, bo przecież przy pokazywaniu listy produktów nie ma żadnych modyfikacji danych takie rozwiązanie zastępuje nam pisanie niepotrzebnego kodu w akcji. Ten post edytował splatch 1.03.2006, 18:00:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 18:42 |