Laravel 5 -在中间件中获取URL参数


Laravel 5 - Getting URL Parameters in Middleware on Resources

假设我在我的路由中定义了一个资源:

Route::resource('account', 'AccountController', ['only'=> ['index','update']]);

然后我让Middleware从内部连接到Controller作为

public function __construct() {
    $this->middleware('BeforeAccount', ['only' => ['update']]);
}

假设我想访问在我的中间件中的帐户(即example.com/account/2)之后发生的uri参数-我如何去抓取该变量?

您可以使用以下代码来实现:

public function handle($request, Closure $next)
{
    $account_id = $request->route()->parameter('accounts');
    //...
}

因为handle方法接收Request对象作为第一个参数。middleware只在路由匹配之后才执行,因此Request对象包含当前路由,不需要使用Route::getRoutes()->match($request)再次匹配路由。

这样就不需要提供'Request对象了:

Route::current()->parameter('parameter');