在 Laravel 10 中删除管理员用户:“不支持 GET 方法”

问题描述 投票:0回答:1

我正在 Laravel 10 中构建一个管理面板,管理员可以在其中看到所有用户的列表以及用于删除每个用户的链接。当我单击删除链接时,出现此错误:“路由 admin/users/2 不支持 GET 方法。支持的方法:DELETE。” 我知道这是一个非常常见的错误,但我想我已经仔细检查了所有内容。

这是我的路线:

Route::group(['middleware' => ['auth', 'isadmin']], function () {
    Route::get('/admin/dashboard', [AdminController::class, 'adminDashboard'])
        ->name('admin.dashboard');
    Route::delete('/admin/users/{user}', [AdminController::class, 'destroyUser'])
        ->name('admin.users.destroy');
    Route::redirect('/admin', '/admin/dashboard');
});

我的控制器:

    public function destroyUser(User $user)
    {
        // dd($user);
        $user->delete;

        return redirect()->back();
    }

我的看法:

<form action="{{ route('admin.users.destroy', $user) }}"
  method="POST">
  @csrf
  @method('DELETE')
  <a class="text-blue-500 hover:text-blue-700" href="{{ route('admin.users.destroy', $user) }}">Delete</a>
</form>

正如你所看到的,我没有忘记在表单中添加

@method('DELETE')
,我在路由器中指定了路由方法为delete。我尝试使用提交类型按钮而不是链接。我尝试将路线移到中间件之外。我也多次尝试清除缓存。

感谢您的帮助!

php laravel routes httprequest
1个回答
0
投票

您的表单使用链接作为提交按钮。这是行不通的。它必须是

button
,且
type
设置为
submit

<button type="submit" class="text-blue-500 hover:text-blue-700" href="{{ route('admin.users.destroy', $user) }}">Delete</button>
© www.soinside.com 2019 - 2024. All rights reserved.