Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter分页URL以?page=1开头,依此类推_Codeigniter_Url_Pagination_Query String - Fatal编程技术网

Codeigniter分页URL以?page=1开头,依此类推

Codeigniter分页URL以?page=1开头,依此类推,codeigniter,url,pagination,query-string,Codeigniter,Url,Pagination,Query String,我已经在Codeigniter框架中创建了我的网站,并希望更新我的特定页面的分页URL,而不是整个网站。下面是正在工作的当前URL模式 https://www.example.com/city/2 https://www.example.com/city/hotel-with-air-conditioning.html/2 https://www.example.com/locality/hotels-in-dwarka.html/2 https://www.example.com/locali

我已经在Codeigniter框架中创建了我的网站,并希望更新我的特定页面的分页URL,而不是整个网站。下面是正在工作的当前URL模式

https://www.example.com/city/2
https://www.example.com/city/hotel-with-air-conditioning.html/2
https://www.example.com/locality/hotels-in-dwarka.html/2
https://www.example.com/locality/5-star-hotel-in-dwarka.html/2
https://www.example.com/city/5-star-hotels-in-newdelhi.html/2
https://www.example.com/locality/hotel-with-air-conditioning-in-dwarka.html/2

Now I want to change them all above to as shown below:

https://www.example.com/city?page=2
https://www.example.com/city/hotel-with-air-conditioning.html?page=2
https://www.example.com/locality/hotels-in-dwarka.html?page=2
https://www.example.com/locality/5-star-hotel-in-dwarka.html?page=2
https://www.example.com/city/5-star-hotels-in-newdelhi.html?page=2
https://www.example.com/locality/hotel-with-air-conditioning-in-dwarka.html?page=2
我使用了$config['page\u query\u string']=TRUE;在初始化分页方法之前


在进行更改后,我得到了“&per_page=/2”,但不是我需要的。还建议我在$config['uri_segment']中传递什么,因为我不想从segment中选择页码,而是从查询参数中选择页码?page=X,其中X将是整数

在使用page_查询字符串时,不应设置uri_segment

要获得page=1而不是per_page,您应该使用query_string_segment配置,如下所示:

$config['query_string_segment'] = 'page';
你的url上额外的/可能是因为你有一个基本url。试着把它移走


您还可以尝试将每次出现的“&page=/”替换为“?page=”。

我创建了一个分页辅助程序,在整个过程中都会使用它。有一点数学要做,以计算出多少总网页,你有,但这应该是工作

<?php
function paginate($pagecount, $currentpage, $baseurl, $params = array()) {

    //var_dump($params);
    $param_parts = array();
    foreach ($params as $key => $param) {
        $param_parts[] = $key . '=' . $param;
    }
    ?>
    <div class="text-center">
    <?php
    $left_ellipsis = false;
    $right_ellipsis = false;
    for ($i = 1; $i <= $pagecount; $i++) {

        if ( ($i < 4) || ($i > $pagecount - 3) || ($i > $currentpage - 3 && $i < $currentpage + 3) ) {

            if ($i == $currentpage) {
                ?>
                <span class="btn btn-sm disabled"><?php echo $i; ?></span>
                <?php
            } else {
                $urlout = array(
                    'currentpage=' . $i
                );
                $urlout = implode('&',$param_parts);
                if ($urlout != '') {$urlout = '&' . $urlout;}
                ?>
                <a class="btn btn-default btn-sm" href="<?php echo $baseurl; ?>?page=<?php echo $i; ?><?php echo $urlout; ?>"><?php echo $i; ?></a>
                <?php
            }
        } else {
            if ($currentpage > 6 && !$left_ellipsis) {
                $left_ellipsis = true;
                echo '<span class="ellip-block">...</span>';
            }
            if ($currentpage < $pagecount - 5 && $i > $currentpage && !$right_ellipsis) {
                $right_ellipsis = true;
                echo '<span class="ellip-block">...</span>';
            }
        }
        //echo $pagecount; 
    }
    ?></div><?php
}
?>

可能会有帮助。欢迎随时更新和分发。

你好,马可蒙泰罗,谢谢你的建议。我尝试将$config['query\u string\u segment']='page'更改为现在显示的“page”,而不是“per\u page”。但是我怎样才能摆脱“&page=/2”或“&per\u page=/3”等等。我希望URL是“?page=2”或“?page=3”,依此类推。codeigniter分页是否有任何配置,以便我可以将“&”更改为“?”也可以删除“/”@ashokostech我认为这与这样一个事实有关:通常情况下,当您不使用诸如site.com/controller/method/之类的url时,会使用这种分页方法,但当您像这样使用url时,则假定分页将是您正在执行的最后一个查询字符串,而不是第一个查询字符串。我认为要解决这个问题,您可以将基本分页url设置为foo.com?而不是foo.com。至于你的问题,我需要更多的信息。请发布您的整个控制器方法,以便我可以在我这边测试它。实际上,我通过在不更改基本url的情况下将每次出现的“&page=/”替换为“?page=”来修复它,并且它工作正常……如何将每次出现的
”&page=/“
替换为
”?page=”。
删除所有可能以该结尾的链接/
<?php paginate($page, $cur, $url, array('q' => $q)); ?>