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,它解决了我的问题
在我的应用程序中,我提供了前缀,例如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,它解决了我的问题