改写ThinkPHP的U方法使其路由下分页正常

ThinkPHP3.1.3在启用路由的情况下,其分页地址不是路由的地址,由于thinkphp3.2.1的代码也没有修复,很多人都遇到了这一问题,本文采纳olcms的修改方法解决这一问题,特别感谢phper jack对此做出的贡献,具体解决办法是修改ThinkPHP的functions.php的U方法,在287行左右:

 if(!empty($vars)) {
 // 添加参数
 foreach ($vars as $var => $val){
 if('' !== trim($val))
 $url .= $depr . $var . $depr . urlencode($val);
 }

后面加入以下代码

/*
* tp开启路由之后下一页路由失效问题 分页类URL组装
*/
 //如果开启路由
 if(C('URL_ROUTER_ON')){
  foreach (C('URL_ROUTE_RULES') as $zhaolg => $zlig){//遍历路由
    if(strstr('/'.GROUP_NAME.$url,$zlig)){//从网址中找路由规则
      $lg = strstr($zhaolg,'/:');//分析规则 带参数?
      if($lg){//如果规则带参数
        $tempzlg = str_replace('/:','',$lg);//取参数
        //dump($tempzlg);
        if($tempzlg){
          if(C('APP_SUB_DOMAIN_DEPLOY')){
            $zlgurl = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url); //url替换为路由规则
          }else{
            $zlgurl = str_replace($zlig,$zhaolg,$url); //url替换为路由规则
          }
          //注 /s/:c/c/4/p/__PAGE__
          //dump($zlgurl);
          $url = str_replace($lg.'/'.$tempzlg,'',$zlgurl);//url替换路由规则参数

        }
      }else{//分析规则 不带参数
        if(C('APP_SUB_DOMAIN_DEPLOY')){
          $url = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url);//url替换为路由规则
        }else{
          $url = str_replace($zlig,$zhaolg,$url);//url替换为路由规则
        }
      }
    }
  }
 }

至此问题得以解决!

(0)

相关推荐

  • ThinkPHP实现分页功能

    前几篇(上传,缩略图,验证码,自动验证表单)文章介绍的功能实现都是基于ThinkPHP框架封装好的类进行实现的,所以这次自己写一个分页类在框架中使用. 首先在根目录建一个Tools文件夹,在Tools文件夹下建Page.class.php类文件,这样以后自定义的工具类都可放在Tools文件夹下. 此类封装有以下函数:获取请求地址,开始页,从哪一条显示,结束页 从哪一条结束,页码列表(首页超链接,上一页,页码数字列表超链接,下一页,尾页,跳转),对于分页足够使用! 下面是Page.class.ph

  • ThinkPHP 3.2 数据分页代码分享

    TP3.2框架手册,有一个数据分页,不过每次都要写太多的代码,还有中文设置等有些麻烦,做为程序开发者,有必要整理下: O.先看效果图 一.分页方法 复制代码 代码如下: /**  * TODO 基础分页的相同代码封装,使前台的代码更少  * @param $m 模型,引用传递  * @param $where 查询条件  * @param int $pagesize 每页查询条数  * @return \Think\Page  */ function getpage(&$m,$where,$pa

  • Thinkphp搜索时首页分页和搜索页保持条件分页的方法

    本文实例讲述了Thinkphp实现搜索时首页分页和搜索页保持条件分页的方法.分享给大家供大家参考.具体实现方法如下: 在做搜索查询时突然发现在首页用的分页代码在搜索页使用时出现错误,首页分页代码(代码中标注start与end部分为分页代码) 复制代码 代码如下: public function index(){   $res=D('Info');// 实例化Data数据对象 /**********start************/   import('ORG.Util.Page');// 导入

  • thinkphp实现数组分页示例

    在thinkphp的框架下实现分页.公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了.thinkphp是MVC架构的,MVC对于任何ITers来说都不陌生,模型(model)-视图(view)-控制器(controller).他将逻辑和数据分开处理,少了很多繁琐的过程.其实在官方的资料中已经详细的介绍了怎么分页,传送门:http://document.thinkphp.cn/manual_3_2.html#data_page 可是并不适用于数据已经从DB中取出

  • ThinkPHP快速入门实例教程之数据分页

    数据分页可能是web编程里最常用到的功能之一.ThinkPHP实现分页功能十分简洁.只需要定义几个参数就可以实现.并且扩展也十分方便. 下面让我们从零开始实现ThinkPHP的分页程序吧. 1.首先,我们得创建一个用于分页测试的数据库 test.sql代码如下. CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL auto_increment, `name` char(100) NOT NULL, `content` varchar(300)

  • ThinkPHP让分页保持搜索状态的方法

    对很多使用ThinkPHP框架的人来说,使用自动自带的增删改查基类,在分页的时候要保持结果页面的搜索状态,但是使用thinkphp手册中的方案却无法奏效. ThinkPHP手册中的解决方法是: //分页跳转的时候保证查询条件 foreach($map as $key=>$val) { $Page->parameter .= "$key=".urlencode($val).&; } 直接粘贴过来不能用,经过调试会发现,当$map不是一个数组的时候,那么变量是拿不到想要

  • ThinkPHP使用心得分享-分页类Page的用法

    ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page类: 复制代码 代码如下: import('ORG.Util.Page'); //Page类的引入$db = M('abc');//实例化数据表abc$where = array('id'=>'2';);//条件语句$where,例表中字段id的值为2$count = $db->where($where)->count();//获取符合

  • thinkphp 一个页面使用2次分页的实现方法

    可以说是毫无技术含量的办法:将Page.class.php复制重命名一个,如nPage.class.php.并在nPage.calss.php中将$this->varPage=C('VAR_PAGE')?C('VAR_PAGE'):'p'改为$this->varPage=C('VAR_PAGE')?C('VAR_PAGE'):'np'当然类名也记得要改为nPage.class.php,然后就在php里直接引用这个类分页,就不会和原来的冲突了--

  • ThinkPHP分页实例

    本文实例讲述了ThinkPHP分页的实现方法,分享给大家供大家参考.具体方法如下: 在TP3.2框架手册中有一个数据分页,不过每次都要写太多的代码,还有中文设置等有些麻烦,做为程序开发者,有必要整理下: 实例运行效果如下图所示: 一.分页方法: 复制代码 代码如下: /**  * TODO 基础分页的相同代码封装,使前台的代码更少  * @param $m 模型,引用传递  * @param $where 查询条件  * @param int $pagesize 每页查询条数  * @retur

  • ThinkPHP分页类使用详解

    一.首先需要在MsgManage控制器中加入分页方法 知识点:1.count函数的试用2.Page类实例化操作及相关参数了解3.limit函数了用4.show函数了解 编辑文件admin/Lib/Action/MsgManageAction.class.php 代码如下: 复制代码 代码如下: class MsgManageAction extends CommonAction {    public function index(){     import('ORG.Util.Page'); 

随机推荐