Laravel 5: не может передавать данные из промежуточного программного обеспечения в контроллер

Я отправляю запрос ajax с методом GET на контроллер

Route::get('test', ['Middleware' => 'TestFilter', 'uses' => 'HomeController@index']);

Промежуточное ПО:

public function handle($request, Closure $next)
{
    return $next($request); //This does not seem to pass $request to HomeController
}

В методе index() HomeController я пытаюсь вернуть $request, но страница выдает ошибку

'Undefined variable: request' in D:\Apps\apilab\app\Http\Controllers\HomeController.php

Я просто возвращаю $request в HomeController

class HomeController extends Controller {
  public function index() {
    return $request;
  }
}

Как передать переменную запроса в HomeController@index, чтобы продолжить обработку?? Я устал пробовать разные способы...


person Ashik Basheer    schedule 17.02.2015    source источник


Ответы (1)


Ваш код неверен. Вы делаете return дважды, но только первый return будет обработан.

Как только ваше промежуточное ПО будет готово, просто передайте $next($request) дальше, чтобы оставшаяся часть фреймворка обработала его.

public function handle($request, Closure $next)
{
    return $next($request);
}

Затем в вашем контроллере

class HomeController extends Controller {
  public function index(Request $request) {
    return $request;
  }
}
person Laurence    schedule 17.02.2015
comment
Отлично, теперь я отредактировал сообщение. Все та же ошибка! - person Ashik Basheer; 17.02.2015
comment
Я обновил свой ответ - вам нужно ввести запрос в контроллер - person Laurence; 17.02.2015