在Laravel中如何将多个选中复选框的Label文本存入数据库
问题根源
- 你的表单仅提交了复选框的value值组成的
additionalOptionsSum数组,没有提交对应选项文本的字段,后端无法拿到文本数据 - 你现有代码中读取的
aditionaloptions参数本身不存在,且拼写也存在错误(正确拼写应为additionalOptions),双重原因导致该字段存储为空。
推荐解决方案(后端预定义映射,更安全)
这种方式避免前端篡改提交的文本内容,可靠性更高:
- 首先在控制器中预定义所有选项的value与文本的对应关系
- 根据提交的选中value数组,匹配得到对应的文本数组后拼接存储
改造后的控制器代码
// 预定义选项映射,后续新增选项只需要修改这里即可 $optionMap = [ 19 => 'Delivery System', 29 => 'Takeaway System', 39 => 'Table Reservation System' ]; $data = new RestaurantOffer; // ......其他字段赋值 // 拿到选中的value数组,默认空数组避免未选中时报错 $selectedValues = $request->get('additionalOptionsSum', []); // 匹配得到对应的文本数组 $selectedTexts = array_map(fn($val) => $optionMap[$val] ?? '', $selectedValues); // 过滤空值后拼接 $data["additionalOptionsSum"] = implode(",", $selectedValues); $data["additionalOptions"] = implode(',', array_filter($selectedTexts)); $data->save();
可选方案(前端提交文本,不推荐)
如果一定要从前端传递文本,可修改Blade模板,将复选框的value改为值和文本的拼接格式,后端拆分即可:
改造后的Blade代码
<label class="form-check-label" for="additionalOptionsSum1" > <input class="form-check-input calc" type="checkbox" id="additionalOptionsSum1" name="additionalOptionsSum[]" value="19|Delivery System"> Delivery System </label> <label class="form-check-label" for="additionalOptionsSum2" > <input class="form-check-input calc" type="checkbox" id="additionalOptionsSum2" name="additionalOptionsSum[]" value="29|Takeaway System"> Takeaway System </label> <label class="form-check-label" for="additionalOptionsSum3" > <input class="form-check-input calc" type="checkbox" id="additionalOptionsSum3" name="additionalOptionsSum[]" value="39|Table Reservation System"> Table Reservation System </label>
注意:你之前的模板中多个复选框用了相同的id,不符合HTML规范,已修改为不同id
对应控制器代码
$selectedItems = $request->get('additionalOptionsSum', []); $selectedValues = []; $selectedTexts = []; foreach ($selectedItems as $item) { [$val, $text] = explode('|', $item); $selectedValues[] = $val; $selectedTexts[] = $text; } $data["additionalOptionsSum"] = implode(",", $selectedValues); $data["additionalOptions"] = implode(',', $selectedTexts);
内容的提问来源于stack exchange,提问作者Besart Haziri
相关产品推荐
相关产品推荐

