Laravel前缀语言前缀,如果有



我想在Laravel中使用语言选择器。我使用了这个解决方案:使用regexp的Laravel可选前缀路由。它运行良好。我在数据库中存储位置,例如:en,de。只有当网站在数据库中设置了多种语言时,我才想使用前缀那么,如果我只有一种语言,我该如何防止使用'prefix' => '{lang?}'呢。

这是我的web.php(路线(:

Route::group(['prefix' => '{lang?}', 'middleware' => 'locale', 'where' => ['lang' => "en|de"], function () {
Route::get('/', 'HomeController@index');
Route::get('article', 'ArticlesControllerController@index');
});

有1种语言:

/home
/article

具有多种语言:

/en/home
/de/home
/en/article
/de/article

在这种情况下,您可以使用闭包函数和if条件。根据值设置前缀,因为可以用所有路由声明闭包,并添加一次带前缀和一次不带前缀:

$languageList = 'fr|en';
$optionalLanguageRoutes = function() {
Route::get('/test', 'DashboardController@test');
};
// Add routes with lang-prefix
if ($languageList) {
Route::group(
['prefix' => '/{lang}/', 'where' => ['lang' => $languageList]],
$optionalLanguageRoutes
);
}
// Add routes without prefix
$optionalLanguageRoutes();

如果没有语言,请声明空的languageList。

相关内容

最新更新