CodeIgniter4 编辑模态框如何实现select下拉框选中值自动回显
解决CodeIgniter4编辑模态框下拉框选中值不回显问题
问题根因
- 视图嵌套循环变量重名:外层遍历商品列表用了变量
$value,内层遍历分类、单位下拉选项时也用了$value,导致外层商品已保存的关联ID被覆盖,无法做匹配判断 - 下拉选项没有添加
selected选中状态的判断逻辑
修复方案
修改视图下拉框代码
将你标注的问题点位置的代码替换为如下内容:
<div class="form-group"> <label>Category Name</label> <select name="id_kategori" class="form-control" required> <option value="">-- Choose Category --</option> <!-- 内层循环变量改名为$kat,避免覆盖外层商品的$value --> <?php foreach ($kategori as $key => $kat) { ?> <option value="<?= $kat['id_kategori'] ?>" <?= $kat['id_kategori'] == $value['id_kategori'] ? 'selected' : '' ?>> <?= $kat['nama_kategori'] ?> </option> <?php } ?> </select> </div> <div class="form-group"> <label>Item Unit Name</label> <select name="id_satuan" class="form-control" required> <option value="">-- Choose Item Unit --</option> <!-- 内层循环变量改名为$sat,避免覆盖外层商品的$value --> <?php foreach ($satuan as $key => $sat) { ?> <option value="<?= $sat['id_satuan'] ?>" <?= $sat['id_satuan'] == $value['id_satuan'] ? 'selected' : '' ?>> <?= $sat['nama_satuan'] ?> </option> <?php } ?> </select> </div>
可选适配调整
如果你的M_Goods模型的find_all()方法返回的商品数据不包含id_kategori、id_satuan字段,可以直接用你已经查询好的关联数据替换视图外层循环的$goods变量:
<?php foreach ($join_kategori_satuan as $key => $value) { ?>
额外BUG修复
你当前控制器edit_goods方法的传参存在逻辑不一致问题:不更换图片的分支里调用update_data传了2个参数,但模型update_data只接收1个$data参数,建议修正避免后续报错:
// 原错误代码:$this->M_Goods->update_data($id_barang, $data); // 修改为 $this->M_Goods->update_data($data);
内容的提问来源于stack exchange,提问作者Catatonia32
相关产品推荐
相关产品推荐

