Laravel 5.6从资源中获取中间件中请求的id



我的资源路线:

Route::resource('imagerequests', 'ImageRequestController');

在浏览器中看起来是这样的:

/imagerequests/19/edit

在我的控制器构造器中,我这样做是因为只有当用户进入编辑页面时,我才需要中间件:

$this->middleware('edit')->only('edit');

我的编辑中间件:

public function handle($request, Closure $next)
{
dd($request->id);
}

这将返回null

我也试过了,还返回了null

public function handle($request, Closure $next)
{
dd($request->imagerequests);
}

当我进入时,我如何访问id

编辑

dd($request);结果

Request {#42 ▼
#json: null
#convertedFiles: null
#userResolver: Closure {#295 ▶}
#routeResolver: Closure {#302 ▶}
+attributes: ParameterBag {#44 ▼
#parameters: []
}
+request: ParameterBag {#50 ▼
#parameters: []
}
+query: ParameterBag {#50 ▶}
+server: ServerBag {#46 ▶}
+files: FileBag {#47 ▶}
+cookies: ParameterBag {#45 ▶}
+headers: HeaderBag {#48 ▶}
#content: null
#languages: null
#charsets: null
#encodings: null
#acceptableContentTypes: null
#pathInfo: "/imagerequests/19/edit"
#requestUri: "/imagerequests/19/edit"
#baseUrl: ""
#basePath: null
#method: "GET"
#format: null
#session: Store {#356 ▶}
#locale: null
#defaultLocale: "en"
-isHostValid: true
-isForwardedValid: true
basePath: ""
format: "html"
}

编辑2

dd($next);结果

Closure {#294 ▼
class: "IlluminateRoutingPipeline"
this: Pipeline {#310 …}
parameters: {▶}
use: {▶}
file: "C:UsersEXM235Desktopacl-pocvendorlaravelframeworksrcIlluminateRoutingPipeline.php"
line: "28 to 36"
}

我不能100%确定这对中间件的作用与对控制器的作用相同,但在控制器中,你会键入来自URL的模型,如下所示:

public function handle($request, Imagerequest $imagerequest, Closure $next)
{
$imagerequest->id
}

当然,您还需要在开始时添加:

use AppImagerequest;

最新更新