Codeigniter使用get方法对搜索结果进行分页

时间:2014-10-19 10:03:23

标签: php codeigniter get pagination

我有一个codeigniter搜索表单,其中包含一个下拉列表(Car)和一个checkbox数组(Car types)。我使用POST方法从数据库中获取值,但是发布方法与分页冲突,所以我决定使用GET方法。但现在我的'如果'声明不起作用它返回我'否则'方案(即' search_nok'页面上有一条消息"请选择您的搜索选项")。你可以检查我的代码并帮我找出错误。

这是我的控制器

   public function search($offset = 0) {
                $limit = 5;

                $this->load->library('form_validation');
                $this->load->model('model_x');

                $this->form_validation->set_rules('car', 'Car','required');
                $this->form_validation->set_rules('types', 'Car Type','required');

               if($this->form_validation->run()) {

        $car= $this->input->get('car');
        $types = $this->input->get('types'); 

        $this->load->library('pagination');

        $config['base_url'] = 'http://localhost/abc/cont/search/'; 

        // 'http://localhost/abc' is my base url

        $config['total_rows'] = 14;
        $config['per_page'] = 5; 

        $data['pagination'] = $this->pagination->initialize($config);

                if ($this->model_x->did_search($car, $types, $limit, $offset)){

                $data["results"] = $this->model_x->did_search($car, $types, $limit, $offset); 
                $this->load->view("search_ok",$data);           
                }          
                }
                else
                {
                $data['message'] = 'Please select your options.';   

                $this->load->view("search_nok",$data);          
                 }              
           }

1 个答案:

答案 0 :(得分:1)

这是因为CodeIgniter中的验证类未检查$_GET参数,并尝试验证POST字段,但未找到cartypes

为了补充这一点,我们通过快速修复来验证您发送的$_GET参数(并且由于您没有POST),您可以将POST数组设置为与GET相同因此将参数传递给验证类。

$_POST = $_GET;

这应该在运行验证之前:

$_POST = $_GET;
$this->form_validation->set_rules('car', 'Car','required');
$this->form_validation->set_rules('types', 'Car Type','required');

if($this->form_validation->run()) {
    // ....
}

更新

保留search parameters across pages