![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 1.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
dajmy na to, że mam 3 tabele w bazie: tabela "tytuly": id -- tytul tabela "tytul_gatunek": id -- tytul_id -- gatunek_id tabela "gatunki": id -- gatunek Jak widać druga tabela wiąże poszczególne rekordy z 1. i 2. tabeli ze sobą (relacja wiele do wielu). Teraz chciałbym wyświetlić listę utworów i przy każdym wypisać do jakich gatunków należy. Mogę to zrobić np. tak: W modelu mogę stworzyć klasy dla tabel "tytuly" i "gatunki". Widok poprosi klasę modelu "tytuly" o listę np. pierwszych 20 tytułów. Widok dostanie tę listę wraz z ich numerami id. Następnie widok poprosi klasę modelu "gatunki" (wysyłając jej numery id tytułów) o tablicę: z listą gatunków dla każdego id tytułu. Widok ją dostanie. Następnie wszystko poskłada i wyświetli. Wydaje mi się to trochę zagmatwane za bardzo, bo jeśli bym to wszystko zrobił w jeden klasie modelu "tytuły" to zajmowałoby to mniej kodu. pozdrawiam i z góry dzięki za wyjaśnienie problemu (IMG:style_emoticons/default/smile.gif) Jak jest poprawnie zgodnie z modelem MVC, czyli jak powinno się to robić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Widok poprosi klasę modelu "tytuly" o listę np. pierwszych 20 tytułów. Widok dostanie tę listę wraz z ich numerami id. Następnie widok poprosi klasę modelu "gatunki" (wysyłając jej numery id tytułów) o tablicę: z listą gatunków dla każdego id tytułu. Widok ją dostanie. Następnie wszystko poskłada i wyświetli. A gdzie ty kontroler? MVC to Model-View-Controler. Poczytaj o tych gdziekolwiek.Kontroler - steruje cala aplikacja. Model - pobiera, przetwarza itp., czyli wykonuje to, co kaze mu kontroler Widok - wyswietla to, co kaze kontroler. Napisales, ze widok prosi model - nigdy w zyciu! Przepisze Twoj opis po mojemu Kontroler poprosi model "tytuly" o listę np. pierwszych 20 tytułów. Kontroler dostaje tę listę wraz z ich numerami id. Kontroler przekazuje ta liste do widoku a widok ja wyswietla. Następnie kontroler poprosi model "gatunki" (wysyłając jej numery id tytułów) o tablicę: z listą gatunków dla każdego id tytułu. Kontroler ją dostaje i przekazuje do widoku. Przy prostych skrytpach takie operacje moga wydawac sie bezcelowe, ale jezeli aplikacja jest rozbudowana to porzadek ulatwia prace nad nia, bo wiadomo gdzie co jest. Ponad to MVC to wzorzec, a z definicji slowa wzorzec wynika, ze nie jest to scisle okreslona regula, czyli kazdy kto mowi "To nie jest w MVC" niekoniecznie ma racje. Tutaj chodzi o rozwarstwienie aplikacji, a nie jakis sztywny schemat. Oczywiscie jak ktos wyswietla html w modelu czy kontrolerze to nie jest to zgodne ze wzorcem, tak samo jak pobieranie dancy w widoku i podobne anomalia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 21:06 |