Как передать переменную в качестве параметра маршрута при доступе к маршруту в Laravel?

#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');
 

Обратите внимание, что:

  1. Точки в названии маршрута не нужны (вы можете указать любое имя).
  2. 'id' in route() вызов ссылается на {id} in Route::get() вызов (имена должны совпадать).

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

1. когда я это реализую, я получаю код состояния 200 при перенаправлении. Почему это происходит?

2. Я не знаю, почему это так, но вызов route() метода таким образом всегда возвращает 200. Если вам нужно указать другой код, вы можете передать его в качестве третьего аргумента для route() вызова. Нравится ... ['id' => $projectRequest->id], 302); .