Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dobra praktyka MVC, Czy widok powinien mieć logikę
okatse
post
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);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
okatse
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.11.2019

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


viking - dzięki za odpowiedź ale :
Cytat
a) Bardzo często tak się robi choćby w blade i laravelu (dyrektywa @can).

tylko które podejście się często robi - bo w pytaniu zawarłem dwa sposoby

Cytat
(IMG:style_emoticons/default/cool.gif) Tutaj albo odpytanie powinno iść do API, albo większość rozwiązań oferuje metodę typu disableLayout która automatycznie wyłącza renderowanie widoku z plików.

metoda z disableLayout jest mi znana jak najbardziej - tylko że to nie rozwiązuje problemu bo wtedy nadal mamy metodę kontrolera która kończy swoje działanie wywaleniem rezultatu bezpośrednio jako output - czyli brak zdefiniowanego widoku. Po prostu metoda się kończy a jej wynik zwracany jest do domyślnego outputa. I tu moje pytanie czy w dobrym tonie jest aby jednak nie pozostawiać tego tak sobie luzem i trochę sztucznie i na siłę stworzyć jednak widok - może przykład
wersja a
  1. class Test {
  2.  
  3. public function get_dane()
  4. {
  5. $imie = 'Jan';
  6. echo $imie;
  7. }
  8.  
  9. }


wersja b

  1. class Test {
  2.  
  3. public function get_dane()
  4. {
  5. $imie = 'Jan';
  6. $this->render('plik_widoku', $imie);
  7. }
  8.  
  9. }
  10.  
  11. plik widoku
  12.  
  13. if( isset($imie))
  14. echo $imie;


W obu przypadkach metodę get_dane wywołuje po przez ajax. W wersji A wynik działania jest po prostu rysowany na output a w wersji B użyty jest widok - trochę sztucznie i na wyrost ale w końcu jest to oparte o wzorzec MVC więc może powinno być tak robione nawet jeśli jest na wyrost ?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 04:37