Я застрял с локализацией laravel. Я хочу, чтобы локаль была необязательной в моих маршрутах. Но проблема в том, что если локаль не отправлена, я хочу en по умолчанию. Если локаль не указана явно в URL. Laravel рассматривает первый параметр, такой как категория, как Locale.
Route::group(["prefix"=>'{locale?}','middleware'=>'getLang'],function() {
Route::get('/',[WebsiteController::class,'get_homepage'])->name('homepage');
Route::get('{category}',[WebsiteController::class,'category_all_news'])->name('category_all_news')->middleware('getLang');
Route::get('{category}/{slug}',[WebsiteController::class,'get_a_news_blog'])->name('get_a_news_blog')->middleware('getLang');
});
Как я могу решить это? Заранее спасибо.
Решение проблемы
Вы можете определить необязательные параметры в своих маршрутах, просто добавив знак вопроса перед ними.
В вашем случае вы можете добавить параметр для локали перед вашей категорией
Route::get('/',[WebsiteController::class,'get_homepage'])->name('homepage');
Route::get('{locale?}/{category}',[WebsiteController::class,'category_all_news'])->name('category_all_news')->middleware('getLang');
Route::get('{locale?}/{category}/{slug}',[WebsiteController::class,'get_a_news_blog'])->name('get_a_news_blog')->middleware('getLang');
При передаче переменной локали в вашем методе вы можете просто определить значение по умолчанию для параметра
https://laravel.com/docs/9.x/routing#parameters-optional-parameters
Комментариев нет:
Отправить комментарий