我正在寻找一种方法,使所有应用程序路由都具有多个区域设置,而不使用路由组。这是因为我使用了外部扩展包,这意味着路由在很多地方注册。
本质上我想让 /foo/bar 以及 /en/foo/bar、/de/foo/bar、/es/foo/bar 等都被 /foot/bar 路由识别和处理
Route::get('foo/bar', function () {
return App::getLocale() . ' result';
});
所以上面会给我'en result'或'de result'或'es result'。
我已经有了根据路径段设置区域设置的中间件。我尝试过以下方法,但没有成功。
...
$newPath = str_replace($locale,'',$request->path());
$request->server->set('REQUEST_URI',$new_path);
}
return $next($request);
希望这是可能的,或者有其他方法可以实现它。
编辑 - - -
根据下面的评论,我通过将以下代码添加到 public/index.php 中来快速破解它。希望这能让我更好地了解我试图通过编辑请求对象来实现的目标。
$application_url_segments = explode( '/', trim( $_SERVER["REQUEST_URI"], '/' ) );
$application_locale = $application_url_segments[0];
$application_locales = ['en' => 'English', 'de' => 'German'];
if ( array_key_exists( $application_locale, $application_locales ) ) {
$_SERVER["REQUEST_URI"] = str_replace( '/' . $application_locale,'',$_SERVER["REQUEST_URI"] );
}