Это довольно странно, хотя ответ зависит от языка / фреймворка, который вы используете, так как разные языки / фреймворки имеют разные подходы MVC.
В общем случае вы не будете использовать один контроллер из другого, поскольку:
Контроллеры обычно возвращают результат типа, предназначенного для использования средой MVC. Этот результат содержит много информации, которая вам, как вызывающей стороне, не нужна (например, имя представления), и не всегда позволяет легко получить информацию, которая может вас заинтересовать (в вашем случае модель, если я правильно угадал).
Контроллеры нелегко инициализировать из бизнес-кода, поскольку им часто требуется некоторое количество информации о HTTP-запросе и контексте. Ожидается, что вся эта информация будет передана средой MVC.
Что еще более важно, если вам нужна куча результатов поиска на двух контроллерах - один, который показывает результаты конечному пользователю, другой, который генерирует статистику, просто поместите логику поиска в свой бизнес-уровень (где он принадлежит, во-первых, кстати), и держите ваши контроллеры как можно меньше.
Роль контроллера в MVC состоит в организации процесса:
- Получить соответствующий вклад из запроса,
- Делегировать валидаторам задачу проверки / дезинфекции ввода,
- Назовите соответствующие методы бизнес-уровня,
- Дайте MVC framework полученную модель и вид.
Роль контроллера не в том, чтобы иметь дело с бизнес-логикой.
После того как код перешел на бизнес-уровень, вы можете предоставить интерфейс поиска, который можно многократно использовать простым и понятным способом, в отличие от одного контроллера, который используется другим.