Laravel自定义路由文件无法找到控制器问题求助
解决自定义路由文件中控制器找不到的问题
看起来你遇到的是Laravel自定义路由加载后无法解析控制器的常见问题,我来帮你梳理几个最可能的原因和解决办法:
忘记指定控制器的完整命名空间
默认的routes/web.php或routes/api.php会自动应用App\Http\Controllers命名空间,但你自己新增的路由文件不会有这个默认配置。所以要么在路由里写全控制器的命名空间:Route::get('/test', 'App\Http\Controllers\TestController@test');要么用路由组统一指定命名空间,让路由写法更简洁:
Route::namespace('App\Http\Controllers')->group(function () { Route::get('/test', 'TestController@test'); });控制器文件的位置或命名空间不匹配
检查你的TestController.php是不是放在app/Http/Controllers目录下,同时文件顶部的命名空间必须是:namespace App\Http\Controllers;另外类名必须是
TestController,注意Linux系统下文件名和类名的大小写要完全一致(比如testcontroller.php是不对的,必须是TestController.php)。Composer自动加载缓存未更新
如果是刚创建的控制器,可能Composer的自动加载还没识别到它,运行以下命令刷新自动加载:composer dump-autoload路由缓存导致的旧配置残留
如果你之前执行过php artisan route:cache来优化路由,新增的自定义路由可能没被包含到缓存里。先清除路由缓存再测试:php artisan route:clear
先从第一个原因排查,因为这是自定义路由最容易踩的坑,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Adrián Silvestre
相关产品推荐
相关产品推荐

