Laravel 8 Blade编辑页面复选框选中状态失效问题
Laravel 8 Blade复选框选中状态不生效的问题修复
问题分析
你的代码存在两个核心问题导致复选框选中状态失效:
- 每个循环中生成了两个同名的
problem_id[]复选框,这会导致表单数据混乱,且第二个复选框未添加选中状态判断 - 选中条件逻辑错误:将
$problem->id与字符串'problem_id'比较,该判断永远不成立
修正后的代码
假设你当前编辑的模型实例为$model(比如控制器传递的$report或对应业务模型),修复后的代码如下:
<label>Permasalahan</label> <div class="row"> <div class="col"> @foreach ($problems as $problem) <div class="form-check"> <input type="checkbox" id="problem-{{ $problem->id }}" name="problem_id[]" value="{{ $problem->id }}" {{ in_array($problem->id, $model->problem_id ?? []) ? 'checked' : '' }} /> <label class="fs-6 fw-light" for="problem-{{ $problem->id }}">{{ $problem->name }}</label> </div> @endforeach </div> </div>
关键修改点
- 合并重复复选框:将两个
input标签合并为一个,同时包含value属性和选中状态判断 - 修正选中逻辑:用
in_array($problem->id, $model->problem_id ?? [])检查当前问题ID是否存在于模型已选中的问题ID数组中 - 关联标签与复选框:给每个复选框和对应标签设置唯一
id和for属性,保证交互关联正确
内容的提问来源于stack exchange,提问作者Lana Septiana
相关产品推荐
相关产品推荐

