Php 重定向到资源路由[Laravel]时,路由不存在

Php 重定向到资源路由[Laravel]时,路由不存在,php,laravel,redirect,routes,resources,Php,Laravel,Redirect,Routes,Resources,我定义了以下路线: Route::resource('profile', 'ProfileController', ['except' => ['create', 'destroy']]); 但是,当我尝试使用以下命令重定向到profile/{id}方法时: redirect()->route('profile', [$userId]); 我得到以下错误: InvalidArgumentException in UrlGenerator.php line 278: Route [

我定义了以下路线:

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

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]);

尝试过这个,但它似乎根本没有重定向。如果我在ProfileController的索引方法中这样做,这有关系吗?我正在尝试设置它,以便/profile显示登录用户的配置文件,/profile/{id}显示其他人的配置文件。实际上,是的,这段代码工作正常。这是我的错,因为我没有返回重定向。如果此代码有效,请进行补票。这将有助于其他人,这是完美的。我已将此更改为答案,因为使用
->route()
方法似乎比
重定向('/profile/'.$id
)干净得多。