Laravel 5:在RouteCollection.php中使用Route :: delete获取MethodNotAllowedHttpException删除用户记录

时间:2015-11-20 03:57:25

标签: php routes laravel-5

尝试在页面上执行此操作:

<form class="form-horizontal" role="form" method="DELETE" action="/user/{{ $user->id }}/delete">
      <button type="submit" class="btn btn-danger">
          Delete
      </button>
</form>

路线:

Route::delete('user/{id}/delete', ['middleware' => ['admin'], 
                                   'uses' => 'Auth\UserController@destroy']);

控制器:

class UserController extends Controller
{
    public function destroy($id)
    {
        DB::table('users')->where('id', $id)->delete();
        return view('admin/dash');
    }
}

我在RouteCollection.php中收到MethodNotAllowedHttpException。 我该如何解决?

解决方案:

感谢Josh。我通过将表单更改为

来解决它
<form method="POST" action="/user/{{ $user->id }}/delete">
                            <input type="hidden" name="_token" value="{{ csrf_token() }}">
                            <input type="hidden" name="_method" value="DELETE" />
                            <button type="submit" class="btn btn-danger">
                                Delete
                            </button>
                        </form>

1 个答案:

答案 0 :(得分:3)

在某些HTML版本的某些实现中,只允许使用GET和POST作为方法。

您可以通过添加自己处理的附加属性_method来解决此问题,也可以使用JavaScript。

如果您正在使用Chrome,请查看开发人员工具中的“网络”标签,以验证是否存在此问题,或将请求添加到帖子中以进行进一步诊断。

有关详细信息,请参阅here