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
,输出将显示应用于您定义的路由的所有各种中间件。
我以某种方式错误地将我的 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
,输出将显示应用于您定义的路由的所有各种中间件。