CodeIgniter中视图向模型传递$plate值失败,求排查解决
问题分析与修正方案
咱们一步步拆解当前代码的问题,调整后就能正常运行啦:
核心问题梳理
- 控制器未获取并传递
plate参数:视图已经通过URL把plate传过来了,但控制器里没读取这个参数,也没传给模型 - 模型方法与控制器调用参数不匹配:控制器调用
fetch_car_services时传了分页相关参数,但模型方法只定义了$plate参数,参数数量和类型完全对不上 - 分页参数(
$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
相关产品推荐
相关产品推荐

