Laravel 5.6 中的“绑定”中间件有啥作用?
Posted
技术标签:
【中文标题】Laravel 5.6 中的“绑定”中间件有啥作用?【英文标题】:What does "bindings" middleware do in Laravel 5.6?Laravel 5.6 中的“绑定”中间件有什么作用? 【发布时间】:2019-01-07 19:28:36 【问题描述】:正如标题。 Laravel 5.6 中默认的 api 中间件在 Kernel.php
中列出为:
protected $middlewareGroups = [
'api' => [
'throttle:60,1',
'bindings',
],
];
我很感谢外行对 bindings
所做的解释,我在任何地方都找不到。
它使用具有handle
方法的SubstituteBindings
类:
public function handle($request, Closure $next)
$this->router->substituteBindings($route = $request->route());
$this->router->substituteImplicitBindings($route);
return $next($request);
虽然我还是不明白它的作用。
【问题讨论】:
我在发布问题后开始阅读 - 谢谢。但是我仍然不清楚这与文档的那一小部分没有提到的绑定中间件有什么关系。在我可以使用路由模型绑定之前,我是否必须通过这个中间件传递所有路由?文档的该部分似乎另有建议。 【参考方案1】:我有同样的问题,并且能够找到这个:
"
Route model binding
现在使用中间件完成。所有 应用程序应添加 照亮\路由\中间件\替代绑定到您的网络 app/Http/Kernel.php 文件中的中间件组:\Illuminate\Routing\Middleware\SubstituteBindings::class,
您还应该注册一个路由中间件以进行绑定替换 在 HTTP 内核的 $routeMiddleware 属性中:
'绑定' => \Illuminate\Routing\Middleware\SubstituteBindings::class, ..."
可以在此页面上找到 - https://laravel.com/docs/5.3/upgrade
以上答案最初来自此来源-https://***.com/a/47784205/3089840
所以在我看来,bindings
中间件只是\Illuminate\Routing\Middleware\SubstituteBindings::class
的缩写词——如果这是正确的,我不确定 Laravel 为什么不在 web
和Kernel.php
中的 api
数组。在web
数组中使用\Illuminate\Routing\Middleware\SubstituteBindings::class
和在api
数组中使用bindings
似乎有点不一致和混乱。
【讨论】:
【参考方案2】:我想你要的是这个https://laravel.com/docs/5.7/routing#route-model-binding
Route::get('api/users/user', function (App\User $user)
return $user->email;
);
它立即绑定用户模型。
【讨论】:
以上是关于Laravel 5.6 中的“绑定”中间件有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章