Laravel 9报错:Class 'app\Http\Controllers\Controller' 找不到
Laravel 9 注册时「Class 'app\Http\Controllers\Controller' not found」错误修复方案
核心问题:命名空间大小写不匹配
Laravel 遵循 PSR-4 自动加载规范,根命名空间为大写的App,而非小写app,这是导致类找不到的直接原因。
1. 修正控制器的命名空间与模型引用
将控制器开头的命名空间和模型引入改为大写App:
<?php namespace App\Http\Controllers; // 从小写app改为大写App use App\Models\User; // 同样从小写app改为大写App use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use RealRashid\SweetAlert\Facades\Alert; class UserController extends Controller { // 其余代码保持不变 }
2. 确认基础Controller类存在
确保项目中app/Http/Controllers/Controller.php文件存在,这是所有自定义控制器的父类。如果缺失,创建该文件并写入默认内容:
<?php namespace App\Http\Controllers; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; }
3. 优化控制器冗余代码(可选)
你的store方法存在两处冗余,可同步优化:
- 避免覆盖原始
Request对象 User::create()已自动完成数据入库,无需重复调用$user->save()
优化后的store方法:
public function store(Request $request) { $data = $request->all(); $data['password'] = Hash::make($data['password']); $user = User::create($data); if ($user) { Alert::success('Success', 'anda berhasil mendaftar'); return redirect('/login'); } else { Alert::error('Failed', 'gagal meregristrasi'); return back(); } }
4. 确认路由的控制器引用
确保路由文件(routes/web.php)顶部正确引入控制器:
use App\Http\Controllers\UserController;
完成以上步骤后,清除缓存并重新测试注册流程:
php artisan optimize:clear
内容的提问来源于stack exchange,提问作者shandy pet
相关产品推荐
相关产品推荐

