我有两个控制器
App\Http\Controllers\Controller\StartController
App\Http\Controllers\Controller\Legacy\StartLegacyController
当我的第一个控制器收到请求时,我检查请求是否包含version=legacy
如果是,那么我想将该请求重定向到StartLegacyController@index
操作
否则,我将在StartController
本身中处理请求。
这是我来自StartController
public function index(Request $request)
{
$version = $request->input('version', 'legacy');
if ($version == 'legacy') {
return Redirect::action('App\Http\Controllers\Legacy\StartLegacyController@index');
}
dd('OKK',$request->all());
}
我得到
(1/1) RuntimeException
A facade root has not been set.
我试图删除命名空间,甚至将控制器放在同一个命名空间中,但它无法正常工作,我将非常感谢任何帮助。
编辑
由于Redirect::action()
在这种情况下不起作用,因此我按照@Ali Mrj的建议提出了一个临时解决方案
$router->get('/start', function (\Illuminate\Http\Request $request) use ($router) {
$version = $request->input('version', 'legacy');
if($version == 'legacy'){
$controller = $router->app->make('App\Http\Controllers\Legacy\StartLegacyController');
return $controller->index();
} else{
$controller = $router->app->make('App\Http\Controllers\StartPageController');
return $controller->index($request);
}
});
将感谢其他解决方案...
答案 0 :(得分:0)
我认为以下代码将为您做到这一点:
return redirect()->action('StartLegacyController@index');