重定向到资源路由 [Laravel] 时路由不存在
Route does not exist when redirecting to resource route [Laravel]
我定义了以下路线:
Route::resource('profile', 'ProfileController', ['except' => ['create', 'destroy']]);
但是,当我尝试使用以下方法重定向到 profile/{id} 方法时:
redirect()->route('profile', [$userId]);
我收到以下错误:
InvalidArgumentException in UrlGenerator.php line 278:
Route [profile] not defined.
可能是什么问题?
试试这样重定向
return redirect('profile/2');
路由方法将路由名称作为第一个参数。所有特定资源路由都将获得自己的名称,但是 none 是使用基本资源(配置文件)的名称创建的。
通过 运行 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]);
我定义了以下路线:
Route::resource('profile', 'ProfileController', ['except' => ['create', 'destroy']]);
但是,当我尝试使用以下方法重定向到 profile/{id} 方法时:
redirect()->route('profile', [$userId]);
我收到以下错误:
InvalidArgumentException in UrlGenerator.php line 278:
Route [profile] not defined.
可能是什么问题?
试试这样重定向
return redirect('profile/2');
路由方法将路由名称作为第一个参数。所有特定资源路由都将获得自己的名称,但是 none 是使用基本资源(配置文件)的名称创建的。
通过 运行 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]);