Jest to dość dziwne, chociaż odpowiedź zależy od używanego języka / frameworka, ponieważ różne języki / frameworki mają odmienne podejście do MVC.
Zasadniczo nie będziesz używać jednego kontrolera od drugiego, ponieważ:
Kontrolery zwykle zwracają wynik typu przeznaczonego do użycia przez środowisko MVC. Ten wynik zawiera wiele informacji, których Ty jako rozmówca nie potrzebujesz (takich jak nazwa widoku) i nie zawsze ułatwia dotarcie do informacji, które mogą Cię zainteresować (w Twoim przypadku model, jeśli tak sądzę).
Kontrolery nie są łatwe do inicjowania z kodu biznesowego, ponieważ często potrzebują pewnej ilości informacji na temat żądania HTTP i kontekstu. Wszystkie te informacje powinny zostać przekazane przez środowisko MVC.
Co ważniejsze, jeśli potrzebujesz kilku wyników wyszukiwania w dwóch kontrolerach - jednym, który pokazuje wyniki użytkownikowi końcowemu, drugiemu, który generuje statystyki, po prostu umieść logikę wyszukiwania w warstwie biznesowej (gdzie należy ona w pierwszej kolejności, przy okazji) i utrzymuj kontrolery tak małe, jak to możliwe.
Rolą kontrolera w MVC jest koordynacja procesu:
- Uzyskaj odpowiedni wkład z żądania,
- Przekazanie zatwierdzającym zadania sprawdzania poprawności / dezynfekcji danych wejściowych,
- Nazwij odpowiednie metody warstwy biznesowej,
- Podaj frameworkowi MVC model wynikowy i widok.
Rolą kontrolera nie jest zajmowanie się logiką biznesową.
Po przeniesieniu kodu do warstwy biznesowej możesz następnie udostępnić interfejs wyszukiwania, który może być ponownie użyty w przejrzysty i prosty sposób, w przeciwieństwie do jednego kontrolera używanego z drugiego.