Jak odwołać się do metody z innego kontrolera?

0

Witam. Piszę stronę z pomocą framework'a Kohana. W kontrolerze z "Aktualnościami" użytkownika chcę pobrać i wyświetlić mu posty. Post składa się z: avatar + nick + treść + kategorie (lista rozwijana). W innym kontrolerze, np. grupy czy profil uzytkownika także będę musiał wyświetlić posty. Aby nie pisać kodu kilka razy i nie zaśmiecać głównego kontrolera (Aktualnosci) chciałem przenieść odpowiednie metody do pasujących kontrolerów. Np. pobranie kategorii do postu chciałem umieścić w kontrolerze Posts (będzie możliwość podglądu postu, więc ten kontroler się do tego przyda później), ale wyświetla mi błąd, zapewne nie można nawet tak tego robić. Czy jest możliwość odwołania się do metody w innym kontrolerze?

oto kod:

$controller_Posts = new Controller_Posts;
$array_categories = $controller_Posts->get_categories_list();

i oto błąd:

ErrorException [ Recoverable Error ]: Argument 1 passed to Kohana_Controller::__construct() must be an instance of Request, none given, called in C:\xxx\application\classes\Controller\Newsfeed.php on line 118 and defined

Aha i żeby ktoś nie pomyślał, że ta metoda powinna być w Modelu. Oczywiście jest metoda w modelu pobierająca z pliku listę kategorii, ale ta metoda z Kontrolera odwołuje się do Modelu, bo jeszcze kategorie potrzebują obróbki i dlatego nie ma funkcji stąd bezpośrednio do Modelu.

0

Aha i żeby ktoś nie pomyślał, że ta metoda powinna być w Modelu

W tym problem, że to właśnie powinno być w modelu, łącznie z tą "obróbką". Model powinien zwrócić Ci gotową listę, którą kontroler jedynie ma przekazać do widoku i tyle.

0

Ucząc się MVC przeczytałem, że w Modelu ma być tylko pobieranie danych i nic więcej, żadnych operacji.

0

Wszelkie operacje na danych powinny być w Modelu (walidacja, joiny, relacje). Ich prezentacja w widoku (bez logiki). Kontroler nota bene ma służyć tylko do reagowania na akcje użyszkodnika, a nie pobierać dane dla widoku. Dodatkowo elementy wyświetlania ściśle związane z modelem (np. model posiada pola first_name i last_name a ty chcesz mieć również full_name) powinny być w dekoratorach, a cała reszta logiki w widokach powinna być w helperach.

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