![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 4.11.2019 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Pytanie dotyczy dobrej praktyki w stosowaniu MVC a dokładniej: a) widok - czy powinien zawierać elementy logiki - np: kontroler przekazuje do widoku dane -> widok sprawdza uprawnienia lub na podstawie uprawnień renderuje część danych (do których user ma uprawniania ) a resztę pomija ? Czy może powinno to wyglądać tak że kontroler przekazuje do widoku tylko te dane do których user ma uprawnienia a widok jakoś musi sobie poradzi z ewentualnym brakiem kompletu danych. (IMG:style_emoticons/default/cool.gif) w frame-workach php opartych o MVC przyjęło się że widok to zazwyczaj kod html. Czy dobrą praktyką będzie tworzenie widoków także dla metod które nie kończą się wyświetleniem strony ? Na przykład gdy wchodzimy pod jakiś URI to kontroler uruchamia metodę renderującą (zazwyczaj html) ale gdy strzelamy pod URI ajaxem to czy powinien istnieć specjalny widok zwracający json czy wystarczy w kontrolerze echo json_encode($output); |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jako, że w aplikacjach webowych bliżej jest do MVP niż do MVC ja jestem za tym, żeby to kontroler kontrolował dostępy, rozporządzał danymi, był punktem styku pomiędzy danymi a ich prezentacją.
Tym samym: Zapis - dane z formularza trafiają do kontrolera, ten sprawdza czy użytkownik na wystarczające uprawnienia do zapisania tych danych i jeśli tak to wczytuje model i zapisuje dane. Odczyt - kontroler sprawdza uprawnienia użytkownika, wczytuje model (czasem sprawdza uprawnienia po wczytaniu modelu i pobraniu danych) jeśli użytkownik ma do nich prawo, albo do części z nich to tworzy odpowiednie zmienne, które przekazuje do widoku do wyrenderowania. Kwestia ifów w widoku jest moim zdaniem zależna od projektu, czasem nie warto duplikować widoków tylko po to, żeby wyświetlać w nich wszystko co przekaże kontroler. Lepiej mieć kilka ifów i re-używać widok w kilku miejscach. Czasem lepiej i wygodniej mieć 1:1 - wszystkie dane przekazane do widoku są wyświetlane, jeśli mamy inny poziom uprawnień, inne dane do wyświetlenia - stosujemy inny widok. W czasach twiga i fajnie rozbudowanego dziedziczenia / bloków / makr - można to fajnie zorganizować bez zbędnego duplikowania kodu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 11:57 |