我是靠谱客的博主 粗心野狼,最近开发中收集的这篇文章主要介绍thinkphp3.2 后台分页更改伪静态 路由 兼容url写法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前几天写项目 后台分页发现一个很坑的地方
因为是小白写的时候一开始都没写后台分页
等项目写的差不多的时候发现thinkphp后台自带的page类
会在你的路径后面加上 /p/1
例如
localhost/patrol/Home/statistics/statistics_warning/p/1
但是我写的都是相对路径 当我点击其他的页面的时候路径就会变成
localhost/patrol/Home/statistics/statistics_warning/statistics/statistics_repair
类似于这样
经过研究说是伪静态 的问题 可以根据重写 来从新定制page类的路径
来达到类似
statistics/statistics_warning_p_1
或者
statistics/statistics_warning?p=1
这样的写法来解决问题

好 我开始来码代码
找到thinkphp3.2 page页面
一般位置在thinkphp/library/think 里面 找到page.class.php
在第23行把

private $url     = ''; //当前链接URL

改成

public $url     = ''; //当前链接URL

在第70行 url方法里

return str_replace(urlencode('[PAGE]'), $page, $this->url);

改成

 $pageUrl = str_replace(strtolower(urlencode('[PAGE]')), $page, $this->url);//开启URL不区分大小写时处理
 return str_replace(urlencode('[PAGE]'), $page, $pageUrl);

在第80行

 /* 生成URL */
        $this->parameter[$this->p] = '[PAGE]';
        $this->url = U(ACTION_NAME, $this->parameter);

改成

 if(0 == $this->totalRows) return '';
        if(empty($this->url)){

            $this->parameter[$this->p] = '[PAGE]';

            $this->url = U(ACTION_NAME, $this->parameter);

        }

然后就去我们定制路径 或者定制路由
我们在分页方法里直接更改url他的写法

    $p->url=__ROOT__.'/Home/'.$url.'?p='.urlencode('[PAGE]').'&'.$parameter;
   

这样写出来就是
/statistics/statistics_warning?p=1 这样的方式

urlencode(’[PAGE]’) 就是当前页数

也可以根据路由的方式完成
首先确认自己打开路由兼容

当打开以后

'URL_ROUTER_ON'   => true, //开启路由
 'URL_MODEL' => '2', //url访问模式为rewrite模式  
 'URL_ROUTE_RULES'=>array(
		'/^warning/warning_management_p_(d+)$/' => 'warning/warning_management?p=:1',//分页
		'/^my/(w+)$/'=>'Index/index?name=:1',
		'/^my/(d{4})/(d{2})/(d{2})$/'=>'Index/day?year=:1&month=:2&day=:3',
	),

下面就是正则路由的方式 同样匹配 不过这样每个页面都要写一条

不会的话查一下手册复习一下 路由的用法

然后就欧克 ,ok了!
以后有问题的话我在改进,先记录下来

最后

以上就是粗心野狼为你收集整理的thinkphp3.2 后台分页更改伪静态 路由 兼容url写法的全部内容,希望文章能够帮你解决thinkphp3.2 后台分页更改伪静态 路由 兼容url写法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部