Laravel 强制前缀

Laravel force prefix

在我的应用程序中,我提供了前缀,例如en 我的网站加载为 domain.xyz/en 现在可以正常工作了,但我需要添加的是:

force redirect when user visits websites without any prefix:

例如用户尝试加载 domain.xyz 此域必须首次重定向到 domain.xyz/en 默认前缀 )才能加载网站,但稍后如果用户选择其他语言它可以设置为那个。 r.g。 domain.xyz/es

问题

我应该在我的中间件中写什么来实现重定向?

我试过使用:

1-$request->route().parameters();
and
2-$request->route().getPrefix();

运气不好。

code

<?php

namespace App\Http\Middleware;

use Closure;

class PrefixMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request);
    }
}

更新

这是我的 web.php 的样子:

$route_prefix = \Config::get('app.route_prefix');
Route::group(['middleware' => 'verified', 'prefix' =>  $route_prefix.'/'], function () use ($route_prefix){
  Route::get('/', 'HomeController@welcome')->name('homepage');
});

更新 2

根据评论建议现在我有这样的东西:

public function handle($request, Closure $next)
    {
        $prefix = \Config::get('app.route_prefix');
        \App::setLocale($prefix);
        return $next($request.'/'.$prefix);
    }

它 returns:

Call to a member function setUserResolver() on string

已解决

我使用了 this tutorial,它解决了我的问题