Laravel路由报错Class "App\Models\MenuList" not found如何解决
报错原因
触发Class "App\Models\MenuList" not found报错的核心原因是类名与文件名不匹配,不符合PSR-4自动加载规范:
Laravel 遵循 PSR-4 自动加载规则,App\Models 命名空间会直接映射到 app/Models/ 目录,加载类时会自动查找「和类名完全同名的.php文件」。你代码中定义的类名为MenuList,但存放该类的文件名为Listing.php,自动加载器无法定位到对应类文件,因此即使在路由中写了use引入语句,也无法正常加载类。
修复方案
二选一即可:
方案1(保留现有类名)
- 将
app/Models/目录下的Listing.php重命名为MenuList.php,确保文件名和文件内的类名完全一致(大小写严格匹配)。 - 在项目根目录执行命令重建自动加载索引:
composer dump-autoload
- 若之前开启过Laravel缓存,可额外执行清理命令避免缓存干扰:
php artisan optimize:clear
方案2(保留现有文件名)
- 打开
app/Models/Listing.php,将类名从MenuList修改为Listing:
<?php namespace App\Models; class Listing { public static function all() { return [ 'id' => 1, 'title' => 'liston one', ]; } }
- 修改路由文件
routes/web.php中的引入和调用语句:
<?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use App\Models\Listing; Route::get('/', function () { return view('listings', [ 'heading' => 'lates listing', 'listings' => Listing::all() ]); });
- 同样执行
composer dump-autoload和php artisan optimize:clear重建索引、清理缓存即可。
内容的提问来源于stack exchange,提问作者user16462554
相关产品推荐
相关产品推荐

