У меня определен следующий маршрут:
Route::resource('profile', 'ProfileController', ['except' => ['create', 'destroy']]);
Тем не менее, когда я пытаюсь перенаправить на метод profile / {id}, используя следующее:
redirect()->route('profile', [$userId]);
Я получаю следующую ошибку:
InvalidArgumentException in UrlGenerator.php line 278:
Route [profile] not defined.
В чем может быть проблема?
Метод 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]);
Попробуйте перенаправить этот путь
return redirect('profile/2');