• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak poprawnie nazywać kontrolery i przydzielać do nich akcje?

0 głosów
314 wizyt
pytanie zadane 2 września 2020 w PHP przez Bizuma Gaduła (3,650 p.)

Witam, chciałbym się dowiedzieć jaka jest poprawna praktyka podczas tworzenia kontrolerów w modelu MVC (konkretnie w Laravelu jeżeli ma to znaczenie).

Przykład przedstawiający problem:

Załóżmy, że tworzymy serwis z ogłoszeniami / ofertami.

Każdy zalogowany użytkownik może tworzyć własne ogłoszenia, edytować je, i szukać ogłoszeń innych użytkowników i odpowiadać na nie.

Każdy niezalogowany użytkownik może tylko szukać ogłoszeń innych użytkowników.

Pytanie brzmi jaka powinna być poprawna struktura kontrolera / kontrolerów?

Czy powinienem utworzyć jeden kontroler, który posiada akcje dla wszystkich tych operacji:

  • wyświetlanie listy ogłoszeń należących do zalogowanego użytkownika
  • wyświetlanie formularza do tworzenia nowego ogłoszenia
  • zapisywanie nowego ogłoszenia
  • wyświetlanie konkretnego ogłoszenia
  • wyświetlanie formularza do edycji
  • zapisywanie zmian po edycji
  • usuwanie
  •  
  • lista wszystkich ogłoszeń (niezależnie od użytkownika)
  • wyświetlanie formularza pozwalającego odpowiedzieć na dane ogłoszenie
  • odebranie odpowiedzi na dane ogłoszenie
  • wyświetlanie formularza pozwalającego na wyszukiwanie konkretnych ogłoszeń

 

Czy może powinny być to dwa(lub więcej) różne kontrolery? Jeżeli tak, to jak poprawnie je nazywać?

Dla jednego kontrolera byłoby to pewnie NoticeController a w przypadku gdy jednak poprawnym jest rozdzielenie ich? CreateNoticeController i FindNoticeController? 

2 odpowiedzi

0 głosów
odpowiedź 2 września 2020 przez senpai desu Mądrala (5,720 p.)
Wydaje się ,że kontrolery powinny odpowiadać modelom (zazwyczaj 1:1) więc zależnie od struktury bazy/tabel

tyle kontrolerów ile tabel, każdy kontroler odpowiada za CRUD jednego modelu, w zależności od wymagań biznesowych do kontrolerów dodaje się więcej kodu/metod, więc obsługa wszystkich operacji związanych z tabelą users była by w kontrolerze User

https://webdevetc.com/blog/laravel-naming-conventions
0 głosów
odpowiedź 2 września 2020 przez Assasz Nałogowiec (30,460 p.)
Tylko kontrolery invoke'owane, czyli posiadające tylko i wyłącznie jedną publiczną metodę. Jeden kontroler = jeden endpoint, nie ma czegoś takiego jak "odwzorowanie modelu" w kontrolerze, są to dwie całkiem niezależne warstwy.

Proponuję poczytać np. o architekturze ADR (Action-Domain-Responder) i z niej czerpać, ponieważ MVC nie jest wzorcem stworzonym dla aplikacji webowych i skłania programistów do wielu złych praktyk. Również nic nie stoi na przeszkodzie, aby zaimplementować konwencję akcji w aplikacji MVC ;)

Podobne pytania

0 głosów
0 odpowiedzi 161 wizyt
0 głosów
0 odpowiedzi 283 wizyt
pytanie zadane 16 stycznia 2022 w JavaScript przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 536 wizyt

93,720 zapytań

142,648 odpowiedzi

323,266 komentarzy

63,270 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...