Маршрут не существует при перенаправлении на ресурсный маршрут [Laravel]

У меня определен следующий маршрут:

Route::resource('profile', 'ProfileController', ['except' => ['create', 'destroy']]);

Тем не менее, когда я пытаюсь перенаправить на метод profile / {id}, используя следующее:

redirect()->route('profile', [$userId]);

Я получаю следующую ошибку:

InvalidArgumentException in UrlGenerator.php line 278:
Route [profile] not defined.

В чем может быть проблема?

0

Решение

Метод route принимает имя маршрута в качестве первого аргумента. Все конкретные маршруты ресурсов получат свои собственные имена, однако ни один из них не создан с именем базового ресурса (профиля).

Запустив php artisan route:list Вы увидите список всех маршрутов вместе с их названиями. Для вас это должно выглядеть примерно так:

+--------+----------+-----------------------------------------+-----------------+---------------------------------------------------+------------+
| Domain | Method   | URI                                     | Name            | Action                                            | Middleware |
+--------+----------+-----------------------------------------+-----------------+---------------------------------------------------+------------+
|        | POST     | profile                                 | profile.store   | App\Http\Controllers\ProfileController@store      |            |
|        | GET|HEAD | profile                                 | profile.index   | App\Http\Controllers\ProfileController@index      |            |
|        | GET|HEAD | profile/create                          | profile.create  | App\Http\Controllers\ProfileController@create     |            |
|        | PATCH    | profile/{profile}                       |                 | App\Http\Controllers\ProfileController@update     |            |
|        | PUT      | profile/{profile}                       | profile.update  | App\Http\Controllers\ProfileController@update     |            |
|        | DELETE   | profile/{profile}                       | profile.destroy | App\Http\Controllers\ProfileController@destroy    |            |
|        | GET|HEAD | profile/{profile}                       | profile.show    | App\Http\Controllers\ProfileController@show       |            |
|        | GET|HEAD | profile/{profile}/edit                  | profile.edit    | App\Http\Controllers\ProfileController@edit       |            |
+--------+----------+-----------------------------------------+-----------------+---------------------------------------------------+------------+

Так как, кажется, вы собираетесь шоу профиль пользователя, это должно быть то, что вы хотите сделать:

redirect()->route('profile.show', [$userId]);
0

Другие решения

Попробуйте перенаправить этот путь

return redirect('profile/2');
1

По вопросам рекламы [email protected]