Laravel6项目删除评论触发comment字段必填验证错误如何修复
问题原因
你的删除表单的HTTP请求方法配置错误,导致请求被路由到了评论更新方法,触发了不必要的字段校验:
- 你当前删除表单用的是
PUT请求方法,PUT方法对应CommentController的update方法,该方法有comment字段必填的校验规则 - 删除功能应该使用
DELETE请求方法,对应你配置的comments.destroy路由,匹配destroy方法完成删除逻辑,该方法不需要comment字段参数
修复步骤
- 修改
edit.blade.php模板中的表单方法声明,将原来的PUT方法改为DELETE:
{{-- 原来的错误写法 --}} {{ method_field('PUT') }} {{-- 修改为正确写法 --}} {{ method_field('DELETE') }} {{-- Laravel 6也支持更简洁的Blade指令写法 --}} @method('DELETE')
修改后的完整表单代码如下:
<form action="{{ route('comments.destroy', $comment->id) }}" method="post"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger btn-block">Delete</button> </form>
修改完成后重新提交删除请求,即可正常调用删除逻辑,不会再触发comment字段必填的校验错误。
- (可选优化)给控制器查询逻辑增加异常处理,避免删除不存在的评论时抛出500错误:
将CommentController的destroy方法中的Comment::find($id)修改为Comment::findOrFail($id),当查询不到对应评论时会自动抛出404错误。
内容的提问来源于stack exchange,提问作者Narakaya
相关产品推荐
相关产品推荐

