Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC - na przykładzie
Forum PHP.pl > Forum > PHP > Object-oriented programming
bor1904
Witam
Tak na prawdę napisałem swój pierwszy twór, który wstępnie celował w MVC - niestety po drodze próbowałem upraszczać i kombinować co zakończyło się sporym bałaganem.
Wszystko to spotęgował mój brak rozumienia PRAKTYCZNEGO modelu MVC.

Jest to aplikacja WWW powiedzmy na wzór Webmina/cPanelu/LMS - zarządzanie ustawieniami sieciowymi serwera za pośrednictwem strony WWW.

Podam poniżej przykład jednej z zakładek:


Najbardziej mnie interesuje podział tego co widać na kontrolery...
Na początku założyłem, że każda zakładka (ta główna na górze) to będzie jeden kontroler ... z czasem się okazało, że muszę w głównych zakładkach robić pod zakładki ... i co teraz?
Stwierdziłem, że podzakładki bedą metodami w kontrolerze odpowiadającym za główną zakładkę .... itd itd

Myśle, że widać jak wygląda u mnie logika aplikacji (właściwie jej brak blinksmiley.gifsmile.gif )

Jak powinienem to rozplanować na klasy, metody, if'y żeby miało sens (mowa o gł. zakładkach, pod-zakładkach,akcjach w pod-zakładkach)?

Z góry dziekuję za każdą wskazówkę i proszę nie wylewać wyszydzać mojej pracy bo zdaje sobie sprawe, że w takiej postaci żadnego wzorca nie przypomina.... sadsmiley02.gif



Pozdrawiam wstydnis.gif

quality
Mysle ze dobrze myslisz.

Mozesz podejzec jak to jest robione w frameworkach php np w symfony i zend jest to bardzo dobrze rozwiazane smile.gif

W Zendzie masz np cos takiego jak kontroller i akcja kontrollera. Czyli kontroller to jest klasa, a akcje to metody klasy. Dajesz glowny kontroller, ktory uruchamia Ci poszczegolne kontrolery i odpowiednie akcje, w zaleznosci od adresu i masz zrobiona obsluge kontrolerow.

Praktycxznie model MVC to jak sama nazwa wskazuje model, widok i kontroller.
Model zajmuje sie tylko i wylacznie pobieraniem danych z bazy, widok tylko i wylacznie wyswietla html + wyswietlenie zmiennych ( ewentualnie jakies szablony np smarty), a najwazniejszy jest kontroler. Zarzadza on ktora akcje uruchomic, jakie dane pobrac z ktorego modelu i ktory widok uruchomic.

Pozdrawiam
bor1904
Dzięki za kontakt.
Mam główny kontroler który w zależności od URL (korzystam z pretty url) ładuje mi kontroler(akcji). -> /kontroler/metoda_kontrolera

Na początku było ok gdy wystarczały mi główne zakładki - każdej przypisałem osobny AC i w tym AC domyślnie ładował się index()- czyli funkcja pobierająca dane z bazy i ładująca smarty(podstronę). Gdy miałem na tej stronie np dodawanie jakichś reguł, zmianę kolejności to formularz wskazywał na np /kontroler/add

W klasie kontrolera miałem funkcję add() która dokonywała zmian i odwoływała się do index() by wyświetlić podstronę już po zmianach.
(oczywiście to tak w super uproszczeniu)

I to rozumiem jest dobre ?


Teraz w sumie mnie interesuje gdy wejdę w zakładkę A, a w niej będą sekcję C i D, które tak właściwie funkcjonują jako dwie zupełnie oddzielne podstrony to czy powinienem coś w sobie zagnieżdżać czy poprostu zamiast kontrolera A dać dwa kontrolery- czyli C i D ?


Z góry dziekuję i pozdrawiam
Crozin
Cytat
Model zajmuje sie tylko i wylacznie pobieraniem danych z bazy
Model zajmuje się pobieraniem danych z dowolnego źródła.
Cytat
widok tylko i wylacznie wyswietla html + wyswietlenie zmiennych ( ewentualnie jakies szablony np smarty)
Widok zajmuje się logiką widoku, a dopiero w finalnym etapie wyświetlaniem np. szablonu HTML.
Cytat
a najwazniejszy jest kontroler
Tak samo ważny jak i inne części. W gruncie rzeczy powinien on określić jakie widoki (widok to nie jest synonim szablonu!) mają zostać odpalone (i z jakich modeli mają korzystać).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.