Codeigniter分页URL以?page=1开头,依此类推
我已经在Codeigniter框架中创建了我的网站,并希望更新我的特定页面的分页URL,而不是整个网站。下面是正在工作的当前URL模式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
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)); ?>