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

CodeIgniter中视图向模型传递$plate值失败,求排查解决

问题分析与修正方案

咱们一步步拆解当前代码的问题,调整后就能正常运行啦:

核心问题梳理

  1. 控制器未获取并传递plate参数:视图已经通过URL把plate传过来了,但控制器里没读取这个参数,也没传给模型
  2. 模型方法与控制器调用参数不匹配:控制器调用fetch_car_services时传了分页相关参数,但模型方法只定义了$plate参数,参数数量和类型完全对不上
  3. 分页参数($config['per_page']、$page)没在控制器里初始化,导致调用模型时参数无效

第一步:修正控制器代码

先从URL中拿到plate,再把它和分页参数一起传给模型:

public function view_services() {
    // 从URL获取plate参数,用xss_clean防止恶意注入
    $plate = $this->input->get('plate', TRUE);
    
    // 初始化分页参数(如果不需要分页可以直接删掉这部分)
    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
    $config['per_page'] = 10; // 自定义每页显示的数据条数
    
    // 把plate和分页参数传给模型
    $data['results'] = $this->Services_model->fetch_car_services($plate, $config['per_page'], $page);
    $this->load->view('car_services', $data);
}

第二步:修正模型代码

调整模型方法的参数列表,接收plate和分页参数,完善查询逻辑:

public function fetch_car_services($plate, $per_page = null, $page = 0) {
    $this->db->where('car_plate_number', $plate); // CI的where方法可以简化写法,不需要单独写=号
    $this->db->order_by('created_datetime', 'DESC');
    
    // 如果需要分页,就添加limit条件
    if ($per_page !== null) {
        $this->db->limit($per_page, $page);
    }
    
    $query = $this->db->get('service_jobs');
    $result = $query->result();
    $this->db->save_queries = false;
    return $result;
}

第三步:优化视图链接(可选)

用CI自带的site_url函数生成链接,同时对$plate做URL编码,避免特殊字符导致解析错误:

<a href="<?= site_url('services/view_services?plate=' . urlencode($plate)) ?>"> 
    <button type="button" class="btn btn-primary">View Services</button>
</a>

这样调整后,$plate就能从视图顺利传到控制器,再传递给模型,模型就能根据车牌查询到对应的数据了。如果不需要分页功能,直接删掉控制器和模型里的分页相关参数即可。

内容的提问来源于stack exchange,提问作者Ronald Torres

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:19:36