0

我正在使用 Laravel 9

当我单击带有路由 /logout 的链接时,出现以下错误:目标类 [App\Http\Controllers\LogoutController] 不存在。然而它确实存在并且文件在那里。LogoutController.php 的文件路径是 app/Http/Controllers/Auth/LogoutController.php

如果我进行刷新,我会得到一个不同的错误:此路由不支持 GET 方法。支持的方法:POST。但方法是 POST 而不是 GET。这是我的路由的 web.php 行,并且使用使用 App\Http\Controllers\Auth\LogoutController 导入了该类;:

Route::post('/logout', [LogoutController::class, 'logout_user'])->name('logout');

这是我在 Auth 目录中的 LogoutController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class LogoutController extends Controller
{
    public function logout_user()
    {
        auth()->logout();
    }
}

这是路线的链接:

        <li>
          <form action="{{route('logout')}}" method="POST">
          @csrf
          <button>Logout</button>
          </form>
        </li>

所有其他相同的路线为什么这条路线不起作用?帮助修复表示赞赏。

4

3 回答 3

3

您的命名空间不正确:

namespace App\Http\Controllers;

需要是

namespace App\Http\Controllers\Auth;

确保它位于正确的文件夹中并且使用语句正确。

还要添加扩展控制器的使用语句

use App\Http\Controllers\Controller
于 2022-03-03T08:52:28.470 回答
0

你应该检查

App\Http\Controller\LogoutController 在此页面中使用并检查 LogoutController 路径,如果可以,您的控制器路径必须进入 app/Http/Controllers 目录运行命令php artisan route:list以显示应用程序中的所有路由,您可以正确测试您的路由在你的 Laravel 应用程序中定义

于 2022-03-03T08:54:38.813 回答
-1

我认为您忘记在您的路线中导入课程。例如use App\Http\Controllers\LogoutController;

于 2022-03-03T08:51:07.037 回答