在uri-Codeigniter中使用GET数据进行分页
我正在尝试对数据库返回的结果进行分页。但当我尝试从URI获取偏移量时:在uri-Codeigniter中使用GET数据进行分页,codeigniter,pagination,Codeigniter,Pagination,我正在尝试对数据库返回的结果进行分页。但当我尝试从URI获取偏移量时: questions/search?content=foobar/4 /4应该是偏移量,但它被分配给$\u GET值 这是控制器中的整个方法: $results=$this->question->search\u results\u count($content); $this->load->library('pagination'); $config['total_rows']=计数($results); $offset=
questions/search?content=foobar/4
/4
应该是偏移量,但它被分配给$\u GET
值
这是控制器中的整个方法:
$results=$this->question->search\u results\u count($content);
$this->load->library('pagination');
$config['total_rows']=计数($results);
$offset=$this->uri->segment(3);
如果($offset==false)$offset=0;
$config['full_tag_open']='';
$config['full_tag_close']='
';
$config['num_tag_open']='';
$config['num_tag_close']=' ;
$config['cur_tag_open']='';
$config['cur_tag_close']=' ;
$config['prev_tag_open']='';
$config['prev_tag_close']=' ';
$config['next_tag_open']=' ;
$config['next_tag_close']=' ;
$config['num_tag_open']='';
$config['num_tag_close']=' ;
$config['first_link']='';
$config['last_tag_open']='';
$config['last_tag_close']=' ;
$config['per_page']=1;
$config['uri_segment']=2;
$config['page\u query\u string']=TRUE;
$config['use_page_number']=TRUE;
$config['suffix']='?content='。$content;
$config['base_url']=base_url().'questions/search/';
$this->pagination->initialize($config);
我相信您知道,URI不是这样工作的。查询字符串必须位于末尾(或#
哈希片段之前)。此查询字符串:
questions/search?content=foobar/4
表示$\u GET['content']='foobar/4'代码>
您需要将分页URL更改为以下内容:
questions/search/4/?content=foobar
4后面的/
也是可选的
您必须从分页的$config['base_url']
中删除查询字符串,并将其附加到视图中的链接中,这很遗憾地涉及到对分页类的攻击
或者尝试此未记录的功能:
// After loading the pagination class
$this->pagination->suffix = '{YOUR QUERY STRING}';
或者更好,只需添加$config['suffix']='{YOUR QUERY STRING}'加载类之前,将代码>添加到配置中。这将自动将查询字符串添加到每个链接的href
还需要对配置区域进行一些调整:
// Make sure to encode these
// $config['first_link'] = '<<';
$config['first_link'] = '<<';
// $config['last_link'] = '>>';
$config['last_link'] = '>>';
$offset = $this->uri->segment(3);
// Default URI segment is 3, and it's what you use above. Remove this.
// $config['uri_segment'] = 2;
// This should be FALSE (default). Remove it.
// $config['page_query_string'] = TRUE;
// This should be FALSE (default) if you're
// using the URI segment as your OFFSET. Remove it.
// $config['use_page_numbers'] = TRUE;
// Add your query string
$config['suffix'] = '?content='.$content;
$config['base_url'] = base_url().'questions/search/';
$this->pagination->initialize($config);
//确保对这些代码进行编码
//$config['first_link']='';
$config['last_link']='';
$offset=$this->uri->segment(3);
//默认URI段是3,这是您在上面使用的。去掉这个。
//$config['uri_segment']=2;
//这应该是FALSE(默认值)。移除它。
//$config['page\u query\u string']=TRUE;
//如果您是
//使用URI段作为偏移量。移除它。
//$config['use_page_number']=TRUE;
//添加查询字符串
$config['suffix']='?content='。$content;
$config['base_url']=base_url().'questions/search/';
$this->pagination->initialize($config);
查询字符串必须是url中的最后一个内容。类似于/search/4?content=foo的东西可以工作?如何在config中查看base_url?查看config/config.php文件和$config['base_url]=xxxxxx的条目;类似于?content=foobar
。无论您希望在href中的页码后面显示什么。我做了如下操作:$config['suffix']='?content='。$content代码>但是当我创建链接()时,输出是空字符串。您是否记得echo
?。。。编辑你的问题,并将你的完整代码添加到你的帖子中,我会看一看。完成。我粘贴在pastebin.com=)我看不到你在哪里显示链接,应该有一个视图文件,你在那里使用echo$pagination代码>。删除后缀
部件是否会使链接再次显示?您还需要删除配置中的page\u query\u string
。还要确保对$config['first_link']='中的括号进行HTML编码
// Make sure to encode these
// $config['first_link'] = '<<';
$config['first_link'] = '<<';
// $config['last_link'] = '>>';
$config['last_link'] = '>>';
$offset = $this->uri->segment(3);
// Default URI segment is 3, and it's what you use above. Remove this.
// $config['uri_segment'] = 2;
// This should be FALSE (default). Remove it.
// $config['page_query_string'] = TRUE;
// This should be FALSE (default) if you're
// using the URI segment as your OFFSET. Remove it.
// $config['use_page_numbers'] = TRUE;
// Add your query string
$config['suffix'] = '?content='.$content;
$config['base_url'] = base_url().'questions/search/';
$this->pagination->initialize($config);