改写ThinkPHP的U方法使其路由下分页正常
2014-07-02 00:00
1331 查看
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替换为路由规则 } } } } }
至此问题得以解决!
相关文章推荐
- 改写ThinkPHP的U方法使其路由下分页正常
- thinkphp 一个页面使用2次分页的实现方法
- Thinkphp分页时查询条件保存方法
- thinkphp3.2 分页方法和模板
- ThinkPHP3.2.3实现分页的方法详解
- 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组
- 家用无线路由无法上网 但是QQ连接正常的解决方法
- thinkphp框架写的项目在nginx下无法正常访问报错的原因以及解决方法
- ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法 原创
- thinkphp方便分页的page方法
- thinkphp路由分页
- Thinkphp分页时查询条件保存方法
- ThinkPHP让分页保持搜索状态的方法
- 让ThinkPHP的Page.class.php支持简短分页路由
- 关于thinkphp中自带的分页类中setConfig("last","尾页")无效的解决方法
- ThinkPHP 3.2.2 路由重写BUG ,修正方法
- thinkphp 一个页面使用2次分页的实现方法
- THINKPHP短链接设置方法(路由设置)
- ThinkPHP让分页保持搜索状态的方法
- thinkPHP使用post方式查询时分页失效的解决方法