Codeigniter与uri中的搜索词分页

时间:2012-01-26 14:32:56

标签: php codeigniter pagination

我有一个显示所有记录的控制器功能,我使用分页类来划分页面中的记录。控制器看起来有点像

class Example extends CI_Controller {

     [...]

     function All()
     {
       //Gets all the records
      //Pagination uri_segment set to 3
     }
}

现在我添加了搜索记录的功能。我需要搜索词在uri中,所以函数就像function All($search_term = false)。我的问题是该功能可能有也可能没有搜索条件。并且根据这一点,分页的uri部分将改变。没有搜索词的uri_segment是3,它是4。

有没有办法解决这个问题,同时使用相同的功能并在网址中包含搜索词?

4 个答案:

答案 0 :(得分:0)

它可以通过各种方式完成,我个人会做一些简单的事情,比如将它存储在会话或cookie中,但你可以做URI以及参考CI论坛: http://codeigniter.com/forums/viewthread/59364/

请记住,人们可能会在搜索字词中键入非URI友好字符串,您必须对这些值进行urlencode / decode,以便将它们放入字符串中,而不需要使用Cookie或会话。但我再次看到了复制和放大的好处。将链接粘贴给某人以获取搜索结果。

答案 1 :(得分:0)

您可以对查询字符串使用get参数。例如:

<强>的search.php

function search() {
  $q = $this->input->get('q');
  $page = $this->uri->segment(3);
  $results = $this->my_model->search($q, $page);
  $this->load->view('search_tpl', $results);
}

<强> search_tpl.php

echo form_open(current_url(), array('method' => 'get'));
echo form_input('q');
echo form_submit('search', 'Search');
echo form_close();

答案 2 :(得分:0)

您可以在分页$ config变量中使用 page_query_string

$config['page_query_string'] = TRUE;

启用此选项后,$ _GET将用于创建分页链接。

示例结果: example/all/?per_page=20

答案 3 :(得分:-1)

您只需更改

即可

$config["uri_segment"] = 3;$config["uri_segment"] = 4;

并更改 base_url ,如

$config["base_url"] = "site_url('student/index')".$search_key;

并通过

获取 search_key
$key = $this->uri->segment(3);