Laravel 5: 无法将数据从中间件传递到控制器

Laravel 5: cannot pass data from Middleware to Controller

我正在使用 GET 方法向控制器发送 ajax 请求

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
}

在 HomeController 的 index() 方法中,我试图 return $request 但页面抛出错误

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

我只是在 HomeController

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

如何将请求变量传递给 HomeController@index 以便我可以继续处理?各种方法都试过了...

您的代码不正确。您正在 returning 两次 - 但只有第一个 return 会被处理。

一旦你的中间件完成 - 只需传递 $next($request) - 这样它就可以由框架的其余部分处理

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

然后在你的控制器中

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