У меня была такая же проблема, чтобы переадресовать внутренний вызов на другой контроллер .
Чтобы решить эту проблему, вы должны создать новый объект запроса со всеми необходимыми параметрами, а затем позволить ядру приложения обработать его.
Таким образом, Laravel будет обрабатывать созданный запрос, как если бы вы делали это в браузере.
Чтобы сделать, как указано выше, создайте запрос и вызовите метод handle
в экземпляре приложения:
$request = Request::create($url, $action, $params, $cookies, $files, $headers);
$response = app()->handle($request);
// If needed you can use the response of the internal call
// if ($response->getStatusCode() == 404) {
// abort(404);
// }
Если вам нужна эта функциональность в нескольких местах, вы можете извлечь ее в свою собственную черту (самый быстрый способ); или переместите логику в собственный класс , который вы связали бы в контейнере приложения.
Последний способ позволяет разрешать зависимость только тогда, когда это необходимо с помощью инъекции печатания текста Laravel из подписи метода или вручную через app()
экземпляр.
Если вам понадобится дальнейшее объяснение о извлечении / связывании классов, дайте мне знать, и я уточню свой ответ.