![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze witam na forum. Świetny portal i nie raz mnie ratował, ale do rzeczy.
Ostatnio zabrałem się za robienie dość sporej aplikacji opartej o model MVC i mam mały problem z umieszczeniem logicznie gdzie powinny znajdować się operacje wykonywane na danych. W modelu czy w kontrolerze? Mini framework już mam, czyli Model -> wyciąganie i zapisywanie danych do bazy, Widok -> GUI dla użytkownika, Kontroler -> zarządza całą imprezą. Teraz, w której warstwie umieścić operacje na danych. Chodzi np o to że do bazy zapisuje numer telefonu w postaci 123456789, a w widoku chcę go mieć jako 123-456-789. Czy funkcja formatuj_numer_tel powinna być wywołana w modelu, zaraz po wywołaniu kwerendy i przypisaniu do obiektu danych, czy w kontrolerze, który de facto wywołuje funkcję Modelu "select" ? bo na bank nie w widoku, choć powoli zaczynam wątpić.... Niby proste pytanie, a nie umiem sobie jakoś poradzić. Z góry dzięki za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
No tak, i wtedy to wywołanie będzie szło z kontrolera. Bo póki co zrobiłem to tak, że model tak jak napisałem wywołuje kwerendę, i parsuje ją jako zmienne, a póżniej kontroler przypisuje jako zmienne do widoku.
Czyli metody operacji na zmiennych należą do modela, a wywołania z poziomu kontrolera. Dobrze rozumiem? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Źle.
1. Taka konstrukcja powinna znaleźć się w widoku, a konkretniej w jakimś szablonie. 2. W szablonie powinno być bezpośrednie odwołanie do modelu, nie ma potrzeby by kontroler przesyłał te dane do szablonu. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dobra jeszcze raz łopatologicznie, bo się już sam pogubiłem.
Krok1: Użytkownik wpisuje/klika adres. Krok2: Kontroler dowiaduje się o tym pierwszy i zaczyna krzyczeć Krok3: Kontroler drze się na Model żeby mu podał dane Krok4: Model woła SQL Krok5: Model dostaje dane Krok6: Model wręcza kontrolerowi dane Krok7: Kontroler wyciąga Widok z imprezy i podaje mu dane Krok8: Widok trzeźwieje patrząc na datę, bo dostał liczbę sekund od 1-1-1970 Krok9: Widok drze się na Model żeby mu te dane sformatował Krok10: Model przeprasza i formatuje dane, po czym zwraca je do widoku. Krok11: Widok wyświetla dane Użytkownikowi i wraca na imprezę. Czy tak? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeśli z widoku będziesz wołał model to pomiń całkowicie wydzieranie się kontrolera na model (IMG:style_emoticons/default/winksmiley.jpg) . Wtedy już tylko widok drze się na model o dane sformatowane...
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
@askone
Hmm.... ale czy tak to powinno być? Ja przedstawiłem powiedzmy subiektywną wersję tego jak to widzę. Tylko z tego co się naczytałem o powiązaniach w MVC to właśnie Kontroler powinien dostać dane z Modelu i przekazać je do Widoku. I tak jak napisał Crozin w pkt2. Bo jeśli mam pominąć powiązanie K-M to w sumie jedynym zadaniem Kontrolera będzie wywołanie widoku. A widok powinien dostać dane z Kontrolera i tylko niektóre z nich sformatować, a resztę wyświetlić jak jest. Chyba zaczynam bredzić.... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Współpraca obiektów w MVC to temat rzeka (IMG:style_emoticons/default/winksmiley.jpg) Wystarczy, że zerkniesz na blog Zyx'a i poczytasz notkę wraz z komentarzami. Tutaj też chyba był podobny wątek - nie pamiętam dokładnie...
Osobiście stosuję rozwiązanie wykorzystujące kontroler do pośredniczenia w przekazywaniu danych - tak się kiedyś nauczyłem z materiałów dostępnych w sieci - aktualnie mi to pasuje więc nie zamierzam tego zmieniać. Decyzja odnośnie sposobu rozwiązania należy do Ciebie... |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tutaj masz o tym co jest MVC, a co nie jest: Temat: Wzorce architektoniczne
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat do bazy zapisuje numer telefonu w postaci 123456789, a w widoku chcę go mieć jako 123-456-789 - to formatuj to w widoku, wtedy łatwo ktoś może zmienić format daty bez grzebania się w modelach czy kontrolerach, model może jedynie zwracać jakieś defaultowe formatowanie ustawione w .ini lub bezpośrednio w modelu (jeśli jest taka potrzeba).
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie przeczytałem: Wpis MVC na Zyx Blog i wątek od Crozin.... a właściwie to Wzorzec MVC wg Crozin
Doszedłem też do pierwszy raz do wniosku, że mvc w php to jakaś potworna abstrakcja..... Przyzwyczajony byłem do modelu z C++, a tu się okazuje, że w PHP to kompletnie inna bajka. Właśnie przerabiam swój framework. Zrobie tak jak radzicie. Czyli Model - wszystkie operacje na danych, Widok - wywołanie plików template i umieszczenie danych z Modela, Kontroler - inicjalizacja Widoku i Modela. Brzmi logicznie? Ten post edytował Vinnie 21.10.2010, 14:45:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:53 |