如何将请求从流明中的一个动作重定向到另一个动作

时间:2019-01-11 18:27:16

标签: php laravel lumen

我有两个控制器

  1. App\Http\Controllers\Controller\StartController
  2. 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.

Error Description

我试图删除命名空间,甚至将控制器放在同一个命名空间中,但它无法正常工作,我将非常感谢任何帮助。

编辑

由于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);
    }
});

将感谢其他解决方案...

1 个答案:

答案 0 :(得分:0)

我认为以下代码将为您做到这一点:

return redirect()->action('StartLegacyController@index');