Laravel:注册'locale'中间件

时间:2019-12-02 11:34:52

标签: php laravel locale middleware

我以某种方式在setLocale中将protected $middlewareGroups中间件注册到Kernal.php时出错了:

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时为什么能正常工作?

这也许是注册中间件的另一种方式吗?

1 个答案:

答案 0 :(得分:2)

由于在web属性中定义的$middlewareGroups中间件,默认情况下应用于在routes/web.php中定义的路由。

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

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