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

CodeIgniter3 form_dropdown()报错Undefined variable: branch求助

问题解决:Undefined variable: branch 错误修复

核心原因

你在index方法中正确获取了分支数据并传递给视图,但**add方法中没有将分支数据传递给form视图**,导致渲染表单时找不到$branch变量。另外还存在表单字段名与控制器接收字段不匹配的问题。

分步修复

1. 在add方法中传递分支数据

修改控制器的add方法,在加载form视图前获取分支数据并加入$data数组:

public function add()
{
    if (!$_POST) {
        $input = (object) $this->students->getDefaultValues();
    } else {
        $input = (object) $this->input->post(null, true);
    }

    // 替换为学生表单对应的验证规则,当前package相关规则不匹配业务逻辑
    $this->form_validation->set_rules('firstname', 'First Name', 'required', [
        'required' => 'First Name can not be empty'
    ]);
    // 补充其他学生必填字段的验证规则,比如lastname、phone_number等

    if ($this->form_validation->run() == false) {
        $data['title'] = 'Register a new Student';
        $data['page'] = 'students/form';
        $data['form_action'] = base_url("students/add");
        $data['input'] = $input;
        // 新增:获取分支数据并传递给视图
        $data['branch'] = $this->students->getBranch(); 
        $this->load->view('back/layouts/main', $data);
    } else {
        // 原有提交逻辑保持不变
    }
}

2. 修正表单下拉框的name属性

视图中form_dropdown的name是branch,但控制器接收时用的是branch_id,导致提交后无法获取选中值,修改视图代码:

<div class="form-group">
    <label for="branch">Branch</label>
    <?php
    $attributes = 'class = "form-control" id = "branch"';
    // 将name从'branch'改为'branch_id',匹配控制器接收的字段
    echo form_dropdown('branch_id', $branch, set_value('branch_id'), $attributes);
    ?>
</div>

3. 优化模型的getBranch方法(可选)

原模型的数组处理逻辑可以简化,避免手动创建两个数组再合并:

public function getBranch()
{
    $this->db->select('id, name');
    $this->db->from('branch');        
    $query = $this->db->get();
    $result = $query->result_array();

    // 直接构建键值对数组,默认选项放在最前面
    $branch_list = ['-CHOOSE-' => '-CHOOSE-'];
    foreach ($result as $item) {
        $branch_list[$item['id']] = $item['name'];
    }
    return $branch_list;   
}

4. 修正表单验证规则(重要)

当前add方法中的验证规则是针对package_name等无关字段的,必须替换为学生表单的必填字段(如firstname、lastname、phone_number),确保表单验证逻辑符合业务需求。


内容的提问来源于stack exchange,提问作者K.Chams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:43:14