#laravel #route-parameters
#laravel #маршрут-параметры
Вопрос:
Это не работает:
return redirect('/view-project-team/' . $projectRequest->id );
Как правильно передать переменную в маршрут в этом контексте?
Комментарии:
1. и какую ошибку вы получаете?
2. вы должны назвать маршрут, затем использовать
return redirect()->route('nameOfRoute', ['id' => 1]);
3. Как сказал @DerekPollard, вы можете сгенерировать URL для именованного маршрута. Документы по именованным маршрутам
4. а как и где у вас есть название маршрута?
5. Я сделал это
Route::get('/view-project-team/{project_request_id}', 'SinglePageController@viewProjectTeam')->name('viewProjectTeam');
и этоreturn redirect()->route('viewTeamProject', ['project_request_id' => $projectRequest->id ]);
, но теперь я получаю ошибку 500
Ответ №1:
Как было сказано в комментариях, вы должны использовать имя маршрута:
return redirect()->route('view.project.team', ['id' => $projectRequest->id]);
Имена могут быть определены в вашем маршрутизаторе:
Route::get('/view-project-team/{id}', 'YourController@yourHandler')->name('view.project.team');
Обратите внимание, что:
- Точки в названии маршрута не нужны (вы можете указать любое имя).
'id'
inroute()
вызов ссылается на{id}
inRoute::get()
вызов (имена должны совпадать).
Комментарии:
1. когда я это реализую, я получаю код состояния 200 при перенаправлении. Почему это происходит?
2. Я не знаю, почему это так, но вызов
route()
метода таким образом всегда возвращает 200. Если вам нужно указать другой код, вы можете передать его в качестве третьего аргумента дляroute()
вызова. Нравится... ['id' => $projectRequest->id], 302);
.