![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 2 Dołączył: 30.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zapoznaję się właśnie z czymś takim jak MVC, napisałem sobie trochę kodu który przypomina frameworka (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Problem w ty że gdzie o tym nie poczytam to coś innego piszą - jakie powinny być relacje widoku modelu i kontrolera? Moje pojęcie jest takie: Kontroler wybiera odpowiedni model, wykonuje wszystkie operacje logiczne związane z daną akcją po czym pobiera odpowiednie dane z modelu i je przekazuje do widoku (żeby operować na ładnych przykładach niech będzie to lista newsów) który to widok z tych danych generuje kod html dla użytkownika. Model odpowiada za operacje na danych, ich zmianę oraz pobieranie. Jeśli kontroler musi np. usunąć newsa to wywołuje odpowiednią metodę modelu. Widok operuje jedynie na danych przekazanych mu przez kontroler, nie ma dostępu do modelu. Czy ta filozofia jest prawidłowa? Na wikipedii w schemacie widok ma połączenie z modelem, ale w tym momencie nie za bardzo rozumiem w jakim celu. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@radzik_w
Ogólnie to jest rozdzielenie na trzy niezależne warstwy. Czyli model pobiera dane, ma swój interfejs getNews add itd. ale wszystko co odwołuje się do źródła danych, najczęściej baza ale właśnie nie zawsze musi być, jak również strukturę danych ukrywa pod interfejsem. Kontroler wie skąd brać dane (z którego modelu/i) i czy coś musi spr. jak poprawność, czy wszystko wprowadzone weryfikacje osoby (choć to już zależy jak się to robi) i przekazuje dane do widoku/modelu (w zależności czy zapisuje czy wyświetla, lub oba naraz). Widok wie tylko jak ma te dane wyświetlić, kontroler nawet nie wie czy widok będzie xml, html czy czymś innym. (właśnie zdałem sobie sprawę ze to co ostatnio robiłem do tworzenia pdfów to powinno istnieć jako widok (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) , a ma różne widoki bo zostało specjalnie właśnie do elastycznego podmiany generacji... ale to juz inny temat) czy zapisania do pliku. Czyli kontroler zbiera dane obrabia dane i je przekazuje do widoku i go nie obchodzi co widok z nimi robi, tak jak nie obchodzi go skąd model bierze. (Widok to można powiedzieć że piszemy artykuł tytuł treść wrzucamy przez szparę w drzwiach i nie wiemy czy pójdzie to do gazety czy telewizji czy radia a może do kosz:D) Dzięki takiemu podziałowi można łatwo zmienić skąd są pobierane dane, jak również jak są prezentowane. Bo zmienię że zamiast do szablony smarty wysyłam do generatora pdf ale tylko to czyli w sumie jedną zmienną, a zmienia nam się zupełnie co otrzymujemy. Dzięki temu zmiana wyglądu strony to kwestia chwili, jak już mamy odpowiednie szablony, bo tylko je zmieniamy nic więcej. Jak zmieni nam się źródło danych to kopiemy w modelu, zachowujemy interfejs i też na modelu się kończy. Chcemy aby na głównej stronie były dodatkowo ostatnie komentarze, tworzymy (jeśli nie ma) w modelu lastcoment (lub mamy sortowane po dacie i podajemy ile, w ten sposób jest uniwersalne) i w kontrolerze pobieramy, w widoku wyrzucamy, tak na prawdę to tylko kontroler i widok się zmienia (bo w modelu najczęściej mamy odpowiednie metody) ups, zbyt się rozpisałem |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 08:41 |