GOOGLE ADS

пятница, 29 апреля 2022 г.

почему Laravel считает категорию локалью

Я застрял с локализацией 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

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...