Laravel 8实现复选框至少勾选一个的验证方法
在Laravel 8中实现复选框至少勾选一个的验证逻辑
步骤1:修改请求验证类的规则
在你的CounselingRequest类的rules()方法中,为problem_id添加验证规则,确保它是数组且至少包含一个元素:
public function rules() { return [ 'student_id' => 'required', 'problem_id' => 'required|array|min:1' ]; }
步骤2:添加自定义错误消息(可选)
如果需要更友好的提示,可以在请求类中添加messages()方法,自定义验证失败的提示文本:
public function messages() { return [ 'problem_id.required' => '请至少选择一个问题', 'problem_id.min' => '请至少选择一个问题' ]; }
步骤3:优化Store方法逻辑
由于验证已经确保problem_id存在且是合法数组,你可以去掉原来的if ($request->has('problem_id'))判断,直接执行关联附加操作:
public function store(CounselingRequest $request) { $counseling = new Counseling(); $counseling->student_id = $request->student_id; $counseling->user_id = Auth::user()->id; $counseling->save(); // 验证已确保problem_id存在,无需再判断 $counseling->problems()->attach($request->problem_id); return redirect('admin/counseling')->with('success', 'Data berhasil ditambah'); }
原理说明
required:确保problem_id字段存在array:确保提交的problem_id是数组类型(复选框提交的多个值默认以数组形式传递)min:1:确保数组至少包含一个元素,即至少勾选了一个复选框
内容的提问来源于stack exchange,提问作者Lana Septiana
相关产品推荐
相关产品推荐

