Laravel 5:无法将数据从中间件传递到Controller

时间:2015-02-17 13:00:46

标签: laravel-5 laravel-middleware

我正在向控制器发送带有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()方法中,我试图返回$ request但页面抛出错误

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

我只是在HomeController中返回$request

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

然后在您的控制器中

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