我有一个显示所有记录的控制器功能,我使用分页类来划分页面中的记录。控制器看起来有点像
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。
有没有办法解决这个问题,同时使用相同的功能并在网址中包含搜索词?
答案 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);