分享

CodeIgniter分页类对多参数传递时的灵活处理

 风凌馆 2016-12-19
    Codeigniter的分页类总体是很方便的,但其使用时有一定的限制,如点击页面跳转按钮的时候,按默认的url方式,必须是这样的格式
http:///index.php/控制器/方法名/页面的偏移值

页面的偏移值必须是方法名后第一个参数,否者分页类不能判断当前是哪一页,而用ci的分页类进行页面跳转时它是把偏移值加在base_url的最后面。这时如果我在点击页面跳转按钮进行页面跳转时还想带参数呢,像下面这样的话分页类就不能正常工作了。

http:///index.php/控制器/方法名/其它参数1/其它参数2/页面的偏移值

网上查找多处文档,一般的解决方法如下:

解决方法,在config.php配置文件中把 $config['enable_query_strings'] 设置为 TRUE,传给分页类的config配置数组中也要加一个设置 $config['page_query_string'] = TRUE; 然后我们就能以这查询字符串的方式来跳转页面了。
http:///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();
           ...
      }
    存盘后,F5看结果,Cool!一次性成功!

实际使用,还发现一个小Bug,即数字1的链接总是会链接不正常,经检查其源代码,是
Pagination.php自作聪明地将第一页认为总是不必加分页号,这样,我们设定的参数顺序就会受到影响,导致结果不正常,知道原因后则处理方式也很简单再给第1页传一个参数,这个参数其实Pagination.php中也是使用的first_url,如下:
        $config['first_url'] = '/test/page/1/222/333' ;


    二次存盘后,F5看结果,Cool X 2 !成功!完美解决!轻松回家吃饭。。。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多