我想在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。