如何使用Codeigniter消除URL中未使用的$ _GET参数?

蒂莫西·费希尔

我正在使用Codeigniter设计一些数据的搜索功能。

我的搜索模型如下所示:

class Search_Model extends CI_Model {

        public function get_results($search_terms = false) {

            // Build query
            foreach ($search_terms as $field => $value) {
                $this->db->like("{$field}", $value);
            }

            // Execute query
            $query = $this->db->get('exams');

            // Return results
            return $query->result_array();
        }
}

搜索控制器方法如下所示:

public function results() {

            $search_terms = array(
                'first_name' => $this->input->get('first_name', TRUE),
                'last_name' => $this->input->get('last_name', TRUE),
                'exam_name' => $this->input->get("exam_name", TRUE)
            );

            $data['title'] = "Search Results";
            $data['exams'] = $this->search_model->get_results($search_terms);

            $this->load->view('templates/header.php', $data);
            $this->load->view('exams/index.php', $data);
            $this->load->view('templates/footer.php');
}

搜索正在按预期方式进行,但是如果我仅搜索“名字”,我想清理出现如下所示的URL:

search/results?first_name=tim&last_name=&exam_name=

如何删除URL中未使用的那些额外参数?

Ashraful Islam Tushar

在标题中包含jquery。然后添加此脚本。

<script>
$(document).ready(function(){
    $('#myform').submit(function(event){
        event.preventDefault();
        var url = $(this).attr('action')+'?';
        var first = false;
        var second = false;
        if($('input[name="first_name"]').val()){
            url += 'first_name='+$('input[name="first_name"]').val();
            first = true;
        }
        if($('input[name="last_name"]').val()){
            if(first){
                url += '&';
            }
            url += 'last_name='+$('input[name="last_name"]').val();
            second = true;
        }
        if($('input[name="exam_name"]').val()){
            if(second){
                url += '&';
            }
            url += 'exam_name='+$('input[name="exam_name"]').val();
        }
        window.location.replace(url);
    });
});
</script>

(我尚未运行此脚本,所以让我知道您是否遇到语法错误或其他错误。)最后将结果函数更改为此,

public function results() {

            $search_terms = array();

            if(isset($_GET['first_name'])){
                $search_terms['first_name'] = $this->input->get('first_name', TRUE);
            }
            if(isset($_GET['last_name'])){
                $search_terms['last_name'] = $this->input->get('last_name', TRUE);
            }
            if(isset($_GET['exam_name'])){
                $search_terms['exam_name'] = $this->input->get('exam_name', TRUE);
            }

            $data['title'] = "Search Results";
            $data['exams'] = $this->search_model->get_results($search_terms);

            $this->load->view('templates/header.php', $data);
            $this->load->view('exams/index.php', $data);
            $this->load->view('templates/footer.php');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章