MVC kontrolery w klasach czy jeden kotrnoler na stronę?

0

Witam
Zastanawiam się jak powinienem podzielić kontrolery w mojej aplikacji opartej na Codeigniterze. W bazie mam 3 modele (cars, users, orders), a kontrolerów miałem więcej, praktycznie każdy kontroler odpowiadał za inną stronę (add_car, show_car itp). Teraz to zmieniłem i to co było wcześniej oddzielnymi klasami kontrolerów, teraz jest metodami w 3 klasach kontrollerów (np kontroller car z metodami add_car, show_cad itd). Ale znów zastanawiam się czy to podejście jest słuszne? Czy jak to inaczej zaplanować?

1

Każdy kontroler powinien odpowiadać za daną grupę requestów. Np kontroler Users powienien obsługiwać takie rzeczy jak dodawanie usera, usuwanie usera, aktualizacje, podgląd profilu, pobranie listy.

1

Tak jest dobrze, controller car powinien obsłużyć cruda od samochodów + jakieś inne operacje związane z samochodami. Poza tym czym lepiej logicznie pogrupujesz dane akcje, tym łatwiej będzie Ci obsługiwać swój projekt nawet pod kątem url'i linków
/users/add
/cars/delete itd itd. Oczywiście to tylko jeden z przykładów, korzyści jest o wiele więcej.

0

Ok, dzięki wielkie za pomoc.
A jeszcze jedna kwestia, w codeigniterze z tego co wiem raczej nie powinno wywoływać się innych kontrolerów w danym kontrolerze, a w sytuacji gdy użytkownik składa zamówienie muszę zmienić rzeczy w tabeli car i order. Czy lepiej będzie w tej sytuacji w metodzie klasy cars wywołać metodę z modelu order czy może przez session data przekazać dane do kontrolera order i go zrobić na niego przekierowanie?

1

Kontroler w żadnym wypadku nie ma prawa wywołać innego kontrolera. Skomplikowane operacje na kilku tabelach dobrze jest tworzyć w osobnych klasach często zwanych serwisami (services) i ten serwis przez DI otrzymuje modele i na nich robi operacje. Nie wiem jak jest teraz codeigniterze bo to już przestarzały framework i dziś się z niego nie korzysta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1