Codeigniter的分页类总体是很方便的,但其使用时有一定的限制,如点击页面跳转按钮的时候,按默认的url方式,必须是这样的格式: http://example.com/index.php/控制器/方法名/页面的偏移值 页面的偏移值必须是方法名后第一个参数,否者分页类不能判断当前是哪一页,而用ci的分页类进行页面跳转时它是把偏移值加在base_url的最后面。这时如果我在点击页面跳转按钮进行页面跳转时还想带参数呢,像下面这样的话分页类就不能正常工作了: http://example.com/index.php/控制器/方法名/其它参数1/其它参数2/页面的偏移值 网上查找多处文档,一般的解决方法如下: 解决方法:在`config.php`配置文件中 $config['enable_query_strings'] 设置为 TRUE 传给分页类的config配置数组中也要加一个设置 $config['page_query_string'] = TRUE; 然后我们就能以这查询字符串的方式来跳转页面了。 http://example.com/index.php?c=test&m=page&d1=222&d2=3333&per_page=20 其中的d1和d2是要传给控制器的别的参数。我们获取这两个参数可以用输入类里的: $this->input->get('d1'); 经测试使用,不太成功,这种方法并不理想,并且在网站中部分URL使用不同的展现方式总是觉得很别扭,经本人摸索测试,可以使用以下简洁的方法实现之: 经检查`Pagination.php`的源代码,发现其有很多参数一般情况下都是未用的,并且其意义就表示可以处理各种特殊问题,其中suffix的变量引起本人注意,经浏览代码,它的意思是在每个链接的后面再增加 给定的内容,看到这里,灵机一动,那我们可以将页号放在分页正常需要的第3个位置,而将其他参数通过这个suffix加入链接不就行了吗? 立刻测试,假定参照上述要求,则将test类中的page方法的变量次序调整一下,即: public function page($page=1,$d1='111',$d2='111') { .... $config['suffix'] = '/222/333' ; ... $this->pagination->initialize($config); $data['page_links'] = $this->pagination->create_links(); ... } 刷新后查看成功,经实际使用,还发现一个小Bug,即数字1的链接总是会链接不正常,经检查其源代码,是`Pagination.php`自作聪明地将第一页认为总是不必加分页号,这样,我们设定的参数顺序就会受到影响,导致结果不正常,知道原因后则处理方式也很简单,再给第1页传一个参数,这个参数其实 `Pagination.php`中也是使用的`first_url`,如下: $config['first_url'] = '/test/page/1/222/333' ;