Codeigniter3调用M_warisantb::Caridata()报Too few arguments错误如何解决
报错根因
你定义的M_warisantb模型下的Caridata方法要求必须传入1个参数,但是你在控制器Home的Cari方法中调用该方法时没有传递任何参数,因此触发了参数计数错误。
表单提交的搜索值不会自动传入模型方法,需要你先在控制器层接收POST参数,再手动传递给模型。
修复方案
- 修改控制器的
Cari方法,先接收表单提交的搜索参数再传给模型:
public function Cari() { // 接收POST提交的cari参数,第二个参数开启CI自带的XSS过滤 $cari = $this->input->post('cari', TRUE); $data['title'] ='Galeri Foto'; // 将拿到的搜索值传入模型方法 $data['tradisi'] = $this->M_warisantb->Caridata($cari); $this->load->view('templates/header',$data); $this->load->view('templates/sidebar'); $this->load->view('templates/topbargaleri'); $this->load->view('templates/galeri',$data); $this->load->view('templates/footer'); }
- 可以给模型方法的参数加默认值,兼容空搜索、用户直接访问路由无POST参数的场景,避免意外报错:
public function Caridata($cari = '') { $this->db->like('domain_opk', $cari); // 原代码无where条件,无需使用get_where,直接调用get方法即可 return $this->db->get('tradisi')->result_array(); }
内容的提问来源于stack exchange,提问作者nanonao
相关产品推荐
相关产品推荐

