![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Próbuję ogarnąć trochę MVC i tak się zastanawiam, czy jeden widok może korzystać z kilku modeli?. Dajmy na to mam stronę sklepu internetowego - model jest tu odpowiedzialny za pozyskanie danych o produktach itp. Załóżmy jednak, że lista kategorii jest dość rozbudowana i jest dynamicznie pozyskiwana z bazy danych. W pewnym momencie okazuję się, że jest to też swego rodzaju model. Teraz pytanie jak to zrobić, żeby było zgdonie z MVC. Do tej pory tworzyłem obiekt menu np. w kotrolerze, i go przekazywałem do widoku, ale zastanawia mnie jak taki problem rozwiązać "prawidłowo". Druga kwestia tyczy się kontrolera i modelu. Właśnie stworzyłem klasę Request - zbiera ona dane z tablic GET POST itd, wykonuje wskazane testy i przechowuje wartości, które przeszły test. Pytanie czy taki obiekt mogę przekazać bezpośrednio do modelu? Wydaje mi się to najwygodniejsze podejście. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Próbuję ogarnąć trochę MVC i tak się zastanawiam, czy jeden widok może korzystać z kilku modeli?. Oczywiście. Druga kwestia tyczy się kontrolera i modelu. Właśnie stworzyłem klasę Request - zbiera ona dane z tablic GET POST itd, wykonuje wskazane testy i przechowuje wartości, które przeszły test. Pytanie czy taki obiekt mogę przekazać bezpośrednio do modelu? Wydaje mi się to najwygodniejsze podejście. Powinieneś tak napisac model albby dawał dane na podstawie argumentów i nie potrzebował tego obiektu do działania. Lepiej przekazać te wartości w miejscu gdzie wywołujesz metody modelu, bo inaczej będziesz miał na sztywno. Model nie będzie mógł wtedy wspołpracować z innym źródłem żądania i bez obiektu Requset. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Powinieneś tak napisac model albby dawał dane na podstawie argumentów i nie potrzebował tego obiektu do działania. Lepiej przekazać te wartości w miejscu gdzie wywołujesz metody modelu(...) Kiedyś korzystałem z takiej metody, że widok był pasywny i przekazyałem do niego pramatetry -> w tej wersji widok był po prostu szablonem. Ostatnio doczytałem, że widok może aktywnie korzystać z modelu -> tzn wywoływać jego metody. I tu zaczyna się problem - bo w takim razie widok powinien mieć dostęp do request - ewentualnie powinien dostać parametry aby móc wywołać funkcję z modelu. Jakoś mi się nie podoba takie podejście, gdyż wtedy mieszają mi się warstwy - widok ma zbyt dużo uprawnień. Wolałbym aby to kotroler / model decydowały o wszystkim a widok tylko wyświetlał. Może lepiej stworzyć model, z konstruktorem który przyjmuje dane z requesta i odpowienio inicjuje zmienne modelu. czyli zamisat
zrobić
zmiana może nie duża, ale przynajmniej jawnie widać czego potrzbuje dany model i można przekazać parametry z różnych obiektów). Przekazanie samego obiektu Request trochę usztywnia projekt, ale z drugiej strony jest dość wygodne. Wszystkie modele są ujednolicone jeśli chodzi o sposób wywołania. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 08:45 |