Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dobra praktyka MVC, Czy widok powinien mieć logikę
okatse
post 4.11.2019, 08:00:25
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.

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);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post 4.11.2019, 20:52:07
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


a. Bezpieczniej gdy kontroler generuje tylko te dane, które są potrzebne. Czyli np jeśli wykryje że użytkownik nie powinien czegoś zobaczyć, to tych danych nie przekazuje do widoku. Lub opcja druga - wybiera inny widok, który tych danych nie renderuje w ogóle.

b. Żeby nie powielać kodu to jeden kontroler będzie ok, wystarczy w nim sprawdzenie typu isAjax() i zwrócenie samych danych, a w przypadku zwykłego requesta renderowanie widoku.


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 04:19