目标 class LogoutController 不存在但它确实存在
Target class LogoutController does not exist yet it does
我正在使用 Laravel 9
当我点击带有路由 /logout 的 link 时,出现以下错误:
目标 class [App\Http\Controllers\LogoutController] 不存在。然而它确实存在并且文件在那里。 LogoutController.php 的文件路径是 app/Http/Controllers/Auth/LogoutController.php
如果我刷新,我会得到一个不同的错误:
此路由不支持 GET 方法。支持的方法:POST。但是方法是POST不是GET。
这是我的路线的 web.php 行,class 是使用 use 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();
}
}
这是路线的link:
<li>
<form action="{{route('logout')}}" method="POST">
@csrf
<button>Logout</button>
</form>
</li>
所有其他相同的路由都有效,为什么这个无效?感谢帮助修复。
我想你忘了在你的路线中导入 class。
例如 use App\Http\Controllers\LogoutController;
您的命名空间不正确:
namespace App\Http\Controllers;
需要
namespace App\Http\Controllers\Auth;
确保它位于正确的文件夹中并且使用语句正确。
同时为扩展控制器添加use语句
use App\Http\Controllers\Controller
我正在使用 Laravel 9
当我点击带有路由 /logout 的 link 时,出现以下错误: 目标 class [App\Http\Controllers\LogoutController] 不存在。然而它确实存在并且文件在那里。 LogoutController.php 的文件路径是 app/Http/Controllers/Auth/LogoutController.php
如果我刷新,我会得到一个不同的错误: 此路由不支持 GET 方法。支持的方法:POST。但是方法是POST不是GET。 这是我的路线的 web.php 行,class 是使用 use 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();
}
}
这是路线的link:
<li>
<form action="{{route('logout')}}" method="POST">
@csrf
<button>Logout</button>
</form>
</li>
所有其他相同的路由都有效,为什么这个无效?感谢帮助修复。
我想你忘了在你的路线中导入 class。
例如 use App\Http\Controllers\LogoutController;
您的命名空间不正确:
namespace App\Http\Controllers;
需要
namespace App\Http\Controllers\Auth;
确保它位于正确的文件夹中并且使用语句正确。
同时为扩展控制器添加use语句
use App\Http\Controllers\Controller