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

CodeIgniter4 编辑模态框如何实现select下拉框选中值自动回显

解决CodeIgniter4编辑模态框下拉框选中值不回显问题

问题根因

  1. 视图嵌套循环变量重名:外层遍历商品列表用了变量$value,内层遍历分类、单位下拉选项时也用了$value,导致外层商品已保存的关联ID被覆盖,无法做匹配判断
  2. 下拉选项没有添加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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:54:06