Laravel 9报错:控制器方法不存在,请求排查问题原因
问题原因与修复方案
你犯了一个典型的命名匹配错误:
- 路由里指定的控制器方法是
get-candidates,但实际在ComplaintController中定义的方法是驼峰命名的getCandidates - PHP 方法名不允许包含连字符,Laravel 路由调用控制器方法时必须使用方法的真实名称(也就是你写的驼峰格式)
具体修复
把路由中的方法名改成和控制器一致的 getCandidates:
Route::name('complaints.')->prefix('complaints')->group(function() { Route::get('/', [ComplaintController::class, 'index']) ->middleware('auth') ->name('index'); Route::get('/get-candidates', [ComplaintController::class, 'getCandidates']) ->middleware('auth') ->name('get-candidates'); });
顺便提个优化建议:控制器里直接用 echo json_encode() 不够规范,Laravel 提供了专门的 JSON 响应方法,会自动设置正确的响应头,代码可以改成这样:
public function getCandidates(Request $request){ $candidatenames = []; return response()->json($candidatenames); }
内容的提问来源于stack exchange,提问作者Bashabi
相关产品推荐
相关产品推荐

