Laravel 5.1 - 路由错误 - RouteCollection.php第143行中的NotFoundHttpException:

时间:2015-09-13 12:53:29

标签: laravel model-view-controller controller routes laravel-5.1

在我的http://localhost:8000/dashboard.user.update表单上点击Submit后尝试访问edit时,我的laravel 5.1项目中发生了此错误。

NotFoundHttpException in RouteCollection.php line 143:

当我在控制器中运行update函数时,会发生此错误。运行indexshow等其他功能时,我没有错误。

这是我的路线:

...
// Dashboard routes...
Route::resource('dashboard/user', 'UserController');
Route::resource('dashboard', 'DashboardController');
...

我已经运行php artisan route:list以查看我的路线是否正常工作:

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

现在我不知道该怎么做,可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

与您的路线表一样,您需要PUT或PATCH进行更新呼叫。您的路线是正确的,但是laravel也会检查路线的方法类型。 我想你想要显示一个视图而不是返回一个json(RestAPI),如果这样,那么隐式控制器比资源要好得多!

http://laravel.com/docs/5.1/controllers#implicit-controllers

如果你想使用它们,你必须将你的方法重命名为getIndex(),getEdit(),postStore(),如果你想要post not not put而不是postUpdate()。

答案 1 :(得分:0)

如果是更新,请告诉laravel它是" PUT"请求。因为只有POST方法的那个url与user_id不存在。

<input name="_method" type="hidden" value="PUT">

这样的事情:

<form method="POST" action="http://localhost:8000/dashboard/user/1">
    <input name="_method" type="hidden" value="PUT">
    //...