CodeIgniter3编辑页如何绑定select下拉框默认选中值
CodeIgniter3 select下拉框编辑页回显选中方案
select下拉框的回显逻辑和input输入框不同:input只需要把值填入value属性即可,select需要给匹配对应值的<option>标签添加selected属性才能实现默认选中,你当前的硬编码select没有加这个判断逻辑,所以无法正常回显。
方案1:硬编码选项添加选中判断(无需加载额外组件)
直接在视图的option标签中加入PHP判断,当控制器传递的类型值和当前option的value匹配时,输出selected属性,兼容新增/编辑两种场景不会报错,修正后的完整视图代码如下:
<div class="form-group"> <label for="m_type">Movie Type</label> <select name="m_type" id="m_type" class="form-control"> <option value="" <?php echo (isset($res[0]->tank_type) && $res[0]->tank_type === '') ? 'selected' : ''; ?>>No Selected</option> <option value="1" <?php echo (isset($res[0]->tank_type) && $res[0]->tank_type == '1') ? 'selected' : ''; ?>>Horror</option> <option value="2" <?php echo (isset($res[0]->tank_type) && $res[0]->tank_type == '2') ? 'selected' : ''; ?>>Comedy</option> <option value="3" <?php echo (isset($res[0]->tank_type) && $res[0]->tank_type == '3') ? 'selected' : ''; ?>>Romance</option> </select> </div> <div class="form-group"> <label for="b_qty">Book Quantity</label> <input type="text" name="b_qty" class="form-control" value="<?php echo isset($res[0]->book_quantity) ? $res[0]->book_quantity : ''; ?>" id="b_qty" placeholder=""> </div>
注意事项
- 值匹配判断用松散比较
==即可,避免数据库返回的数字是字符串格式、和option的value类型不一致导致匹配失败 - 所有取值前加
isset()判断,兼容新增页面(无编辑数据传入的场景),不会触发PHP变量未定义的警告 - 修正了原代码中label的for属性和元素id不匹配的问题,符合HTML规范
方案2:使用CI3内置表单辅助函数(易维护,适合选项较多的场景)
如果后续下拉选项会迭代增加,推荐用框架自带的form_dropdown方法,框架会自动完成选中值匹配,不需要手动写判断:
- 首先在对应控制器中加载表单辅助函数,定义选项数组并传递到视图:
// 控制器代码 $this->load->helper('form'); // 定义下拉选项 $data['movie_type_list'] = [ '' => 'No Selected', '1' => 'Horror', '2' => 'Comedy', '3' => 'Romance' ]; // 取出当前选中值,兼容新增场景 $data['selected_type'] = isset($res[0]->tank_type) ? $res[0]->tank_type : ''; // 加载视图 $this->load->view('对应视图文件名', $data);
- 视图中直接调用函数生成下拉框即可:
<div class="form-group"> <label for="m_type">Movie Type</label> <?php echo form_dropdown('m_type', $movie_type_list, $selected_type, ['class' => 'form-control', 'id' => 'm_type']); ?> </div>
按照上述两种方案任意一种修改后,你当前编辑场景下传入的类型值为1,页面加载时会自动选中value为1的Horror选项,回显逻辑和图书数量输入框保持一致。
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

