Как перенаправить запрос на другое действие из одного действия в Lumen - PullRequest
0 голосов
/ 11 января 2019

У меня два контроллера

  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

Я пытался удалить Пространство имен, даже поместить контроллер в то же пространство имен, но оно не работает, буду очень признателен за любую помощь.

EDIT

Так как 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 голосов
/ 11 января 2019

Я думаю, что следующий код сделает это за вас:

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