Laravel префикс языковой префикс, если он имеет - PullRequest
0 голосов
/ 08 апреля 2020

Я хотел бы использовать селектор языка в Laravel. Я использовал это решение: 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

1 Ответ

0 голосов
/ 08 апреля 2020

Хорошо, в этой ситуации вы можете использовать функцию Closure и условие if. Установите префикс на основе значений, так как можно объявить Closure со всеми вашими маршрутами и добавить его один раз с префиксом и один раз без:

$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, если у вас нет языков.

...