【问题标题】:Laravel 5.1 - Routes Error - NotFoundHttpException in RouteCollection.php line 143:Laravel 5.1 - 路由错误 - RouteCollection.php 第 143 行中的 NotFoundHttpException:
【发布时间】:2015-12-09 13:46:36
【问题描述】:

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

NotFoundHttpException in RouteCollection.php line 143:

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

这是我的路线:

...
// 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       |
...

现在不知道怎么办,可以帮忙吗?

【问题讨论】:

  • 你不应该这样访问路由..应该是localhost:8000/dashboard/user/id id是用户的id
  • @JLPuro,是的,localhost:8000/dashboard/user/user_id 是显示数据时的访问方式。我运行localhost:8000/dashboard/user/user_id 到show 或localhost:8000/dashboard/user/user_id/edit 到edit 没有错误。我需要的是update。
  • @JLPuro,顺便说一句,使用http://localhost:8000/dashboard.user.update 不是我访问路由的方式。 laravel 做到了。该 URI 显示在我的浏览器 URL 中。
  • 你能把你的表单粘贴到这里,具体编辑你正在使用的操作
  • 是的,我理解..我的意思是您需要使用 Post 方法并在您的操作中使用正确的路线..就像
    localhost:8000/dashboard/users/11" 接受-charset="UTF-8">

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    如果是更新,告诉 laravel 这是一个“PUT”请求。因为该 url 的 user_id 的简单 POST 方法不存在。

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

    类似这样的:

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

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 2016-07-03
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      相关资源
      最近更新 更多