Я нашел следующий код, показывающий, как изменить контроллер и метод контроллера в промежуточном программном обеспечении:
class ChangeControllerMiddleware {
public function handle($request, Closure $next) {
$route = $request->route();
$routeAction = array_merge($route->getAction(), [
'uses' => '\App\Http\Controllers\Foo@bar',
'controller' => '\App\Http\Controllers\Foo@bar',
]);
$route->setAction($routeAction);
$route->controller = false;
return $next($request);
}
}
source
Но этот метод не работаетв 5.3. (Я получаю эту ошибку: «Невозможно получить доступ к защищенному свойству Illuminate \ Routing \ Route :: $ controller».)
FYI: после $route->setAction($routeAction);
мой отладчик показывает, что свойства маршрута «использует» и «контроллер» убеждаютне обновляется.
Любые идеи будут очень полезны!