You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel中如何将多个选中复选框的Label文本存入数据库

问题根源

  1. 你的表单仅提交了复选框的value值组成的additionalOptionsSum数组,没有提交对应选项文本的字段,后端无法拿到文本数据
  2. 你现有代码中读取的aditionaloptions参数本身不存在,且拼写也存在错误(正确拼写应为additionalOptions),双重原因导致该字段存储为空。

推荐解决方案(后端预定义映射,更安全)

这种方式避免前端篡改提交的文本内容,可靠性更高:

  1. 首先在控制器中预定义所有选项的value与文本的对应关系
  2. 根据提交的选中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:24:03