![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Może jest na to jakiś pattern lub chociaż dobra praktyka.
Mamy grupę prostych operacji CRUD w oparciu o zestaw: kontroler na wszystkie akcje (index, create, update, delete), walidacja, widoki, warstwa biznesowa (zapytania do bazy). Do tego ewentualnie tłumaczenia do widoków ale to mniej istotne. Te akcje mogą być wykonywane przez użytkowników np. nauczycieli na ich poziomie (czyli mogą dodać ucznia, zmienić dane klasy itp.). Teraz chciałbym dodać takie same możliwości dyrektorowi, który ma osobny panel typu sekretariat. Zastanawiam się jak to ugryźć aby uniknąć nadmiernej duplikacji kodu. Między operacją dokonaną przez dyrektora, a nauczyciela są różnice np. przy dodawaniu ucznia nauczyciel nie wybiera do jakiej klasy bo tą ma przyisaną, a dyrektor musi wybrać z listy select klasę. Ta różnica ma wpływ na widok, walidację, reszta jest praktycznie taka sama. Póki co w Laravel mam wydzielone do osobnych klas walidację (choć muszę tutaj jeszcze dodać ten jeden warunek) oraz wydzieloną logikę biznesową do repozytorium/eloquent. Pozostaje duplikacja kodu w widokach i kontrolerach. Widoki nie wiem? Wydzielić form do osobnych widoków i includować? A logika kontrolerów? Jedyne co mi przychodzi do głowy to jakieś osobne klasy lub traits. Jakieś Wasze doświadczenia? Ten post edytował markonix 1.11.2017, 02:29:59 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat duplikacja kodu w widokach i kontrolerach - w kontrolerach to nie problem, bo kontrolery nie zawierają kodu poza np. $service->doSth(), jeśli masz kod w kontrolerach to powinieneś go przenieść do serwisów - w widokach jak wyżej, kod przygotowujący zmienne do templatek łatwo wydzielić do serwisów Potem w serwisach bardzo łatwo jest wydzielić/sparametryzować wspólne bloki kodu. Ten post edytował Pilsener 2.11.2017, 08:49:19 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 06:52 |