#php #laravel
#php #laravel
Вопрос:
Я использую Laravel 8.1. В настоящее время у меня есть этот универсальный маршрут:
Route::any('/{any}', [IndexController::class, 'index'])->where('any', '.*');
Это отлично работает для всех URL-адресов. Однако, если я хочу прикрепить параметр GET для ID, я должен сделать это:
/api/products/view?id=1
Вместо этого я хочу сделать это:
/api/products/view/1
Моя подпись функции выглядит следующим образом:
public function index(Request $request) {}
Я хочу только ID в качестве необязательного параметра GET.
Комментарии:
1. Вы хотите получить
id
от своего$request
или вы хотите сделатьid
необязательный в своем маршруте?
Ответ №1:
Вы можете добавить еще один необязательный параметр маршрута и указать шаблон в where для any
параметра — «. *» не будет работать с необязательным параметром после любого
Route::any('/{any}/{id?}', [IndexController::class, 'index'])->where('any', '[A-Za-z-_] ');
public function index(Request $request)
{
$id = $request->route('id');
}
Ответ №2:
Вы можете добавить другой параметр маршрута и получить его в контроллере, как у меня ниже:
Маршрут:
Route::any('/{any}/{id}', [IndexController::class, 'index'])->where('any', '.*');
Контроллер:
public function index($any, $id)
{
// $id will be passed in.
}