Laravel实现简单的MiddleWare并不起作用

时间:2018-01-02 03:19:12

标签: laravel laravel-5 output middleware laravel-5.5

在我的网络应用程序中,我试图检查本地URL,例如:

在此http://www.sample.com/aboutUs网址中,我们没有enru等任何区域设置,例如:http://www.sample.com/en/aboutUs

在我的网络应用中,我实施了简单的中间件,以便在网址不具备时检查并修复网址:

class language
{
    public function handle($request, Closure $next)
    {
        dd($request);
        $locale = $request->segment(1);

        if (!array_key_exists($locale, config('app.locales'))) {
            $segments = $request->segments();
            $segments[0] = config('app.fallback_locale');
            return redirect(implode('/', $segments));
        }

        app()->setLocale($locale);

        return $next($request);
    }
}

注册的内容:

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

    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];
protected $routeMiddleware = [
    'language' => \App\Http\Middleware\Language::class,
    ...
];

只有当我们在URL中使用区域设置并且我的代码为:

时,此中间件才有效
Route::get('/showContent/aboutUs', ['middleware' => 'language', function()
{
    dd('asda');
    //
}]);

这不起作用,我看不到任何dd输出

1:

Route::group(['middleware' => 'web'], function () {
    Route::get('/showContent/aboutUs', 'HomeController@aboutUs');
});

2:

Route::group(['middleware' => 'language'], function () {
    Route::get('/showContent/aboutUs', 'HomeController@aboutUs');
});

对于我的所有解决方案,我得到了这个输出:

  

抱歉,找不到您要查找的页面。

0 个答案:

没有答案