Laravel: 注册'locale'中间件

Laravel: register 'locale' middleware

我以某种方式错误地将我的 setLocale-中间件注册到 Kernal.php 中的 protected $middlewareGroups,如下所示:

protected $middlewareGroups = [
    'web' => [
        ...,
        \App\Http\Middleware\setLocale::class,
    ],
];

但令人惊讶的是这有效,所以我认为我做对了。

我现在注意到了这一点(在我寻找一些关于本地化的教程之后)并立即更正了它,在 Kernal.php 中像这样注册了我的中间件:

protected $routeMiddleware = [
    'locale' => \App\Http\Middleware\setLocale::class,
];

并将此添加到我的 web.php 因为我之前没有这个:

Route::middleware('locale')->group(function() {
    ...
});

我现在的问题是,为什么我把它注册到 $middlewareGroups 时它会起作用?

这可能只是注册中间件的另一种方式吗?

因为 $middlewareGroups 属性 中定义的 web 中间件默认应用于 routes/web.php 中定义的路由。

这是在 app/Providers/RouteServiceProvider.php 文件中完成的,默认情况下是新的 laravel 项目。

旁注:如果您在项目的根文件夹中执行 php artisan route:list,输出将显示应用于您定义的路由的所有各种中间件。