Laravel8添加评论回复时控制器提示参数过少错误如何解决?
错误原因
你的路由没有声明rid参数位,即使你在视图的route()方法中传入了rid参数,该参数只会被当做URL查询参数处理,不会被注入为控制器方法的第二个入参,因此控制器只接收到了自动注入的Request对象,缺少第二个必填参数触发报错。请求还未进入你写的控制器业务逻辑就被拦截,所以dd()方法不会执行。
解决步骤
- 修改
routes/web.php的路由定义,增加{rid}路由参数占位符:
Route::post('/replycreate/{rid}', [CommentController::class, 'createReply'])->name('createreply');
如果需要避免传入非数字的无效ID,还可以给路由加参数约束:
Route::post('/replycreate/{rid}', [CommentController::class, 'createReply']) ->where('rid', '[0-9]+') ->name('createreply');
- 额外注意检查
Reply模型的批量赋值设置,确保你要写入的字段已经加入$fillable属性,避免后续保存时报批量赋值错误:
// app/Models/Reply.php protected $fillable = ['replyContent', 'user_name', 'comment_id'];
内容的提问来源于stack exchange,提问作者zzxczxczaa
相关产品推荐
相关产品推荐

