tp5.0.20 分页跳转时URL错误的解决办法

在使用ThinkPHP5.0.20时遇到分页URL错误,通过设置 hinkUrl::root('/public/index.php?s=')及修改config.php和Paginator.php文件中的分页配置,解决了分页跳转不正确的问题。添加了自定义的'iswrong'选项以生成正确的分页URL格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近的项目用TP5.0.20 , 在使用过程中发现分页有时候 正常有时候 不正常 ,可能是服务器配置的问题吧 ,分页点击下一页面的时候 URL不正确 , 于是百度了蛮久 , 也到TP官网论坛里面去找帮忙 ,结果都是没有效果 ,于是 想,自己能不能按照自己的需求来改进一下这个分页功能。结果还真的成功了 。分享一下!

首页,在运行的时候已经设置了 \think\Url::root('/public/index.php?s=') ;  所以访问页面基本上都是 类似于 http://域名/public/index.php?s=/index/Order/index.html  ,当有分页的时候 ,下一页系统默认是 index.php?page=2 ,这样肯定不能正常访问到正确的下一页 , 正确的URL应该是 /public/index.php?s=/index/Order/index/page/2.html  .所以得动手 修改一下分页的功能了。

1.修改一下配置文件config.php中的对于分页的设置 ,我的配置如下 :

 

 

 

 

 

注意:path,iswrong 这两项是自己配置的,

2.修改核心文件功能 \think\library\think\Paginator.php , 修改的部分如下 , 只需要修改 url()方法即可;代码如下

 

    protected function url($page)

    {

        if ($page <= 0) {

            $page = 1;

        }

        

        if (strpos($this->options['path'], '[PAGE]') === false) {

            $parameters = [$this->options['var_page'] => $page];

            $path       = $this->options['path'];

        } else {

            $parameters = [];

            $path       = str_replace('[PAGE]', $page, $this->options['path']);

        }
        
        
        
        if (count($this->options['query']) > 0) {

            $parameters = array_merge($this->options['query'], $parameters);

        }
        
        
        
        if( $this->options['iswrong'] ){ // 自己写的
            
            $request= \think\Request::instance();
            
            $path .= "/".$request->module()."/".$request->controller()."/".$request->action() ;    
            
            $url = $path;
            
            if (!empty($parameters)) {
                
                foreach($parameters as $key=>$val){
                    $url .= '/' . $key.'/'.$val ;
                }
                
                $url .='.'.config('url_html_suffix') ;
            }
            
            
            
        }else{ // 系统原来的
        
    
            $url = $path;
            
            if (!empty($parameters)) {
    
                $url .= '?' . http_build_query($parameters, null, '&');
    
            }
            
            
        }
        
        
        return $url . $this->buildFragment();

    }
 

如果能解决你的问题记得点赞哟~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值