php - Codeigniter 分页第一页始终是当前页

标签 php codeigniter pagination

我在这个问题上大发雷霆。我正在使用 CodeIgniters 分页库,现在它总是停留在第 1 页作为当前页面。我检查了一堆 StackOverflow 问题,我没有遇到与其他人相同的问题。

这是我的网址结构

website.com/leaders/page/[page_number]

这是我 Controller 中的分页代码

    $this->load->library('pagination');

    $config['per_page'] = $query_config['limit'];
    $config['base_url'] = base_url() . 'leaders/page/';
    $config['total_rows'] = 2000; // I actually use a function for this number
    $config['full_tag_open'] = '<div id="paginate">';
    $config['full_tag_close'] = '</div>';
    $config['first_link'] = '&laquo; First';
    $config['last_link'] = 'Last &raquo;';
    $config['use_page_numbers'] = true;
    $config['uri_segment'] = 3;

    $this->pagination->initialize($config);

当我在 View 中回显分页时,它看起来很有效。每个链接上的网址都是正确的,一切看起来都很好。最后一个链接显示最后一页的 url,当前页面为 1。但是,当我从分页中单击第 2 页或任何其他页面时,即使 url 如下,它仍将第 1 页显示为当前页面

website.com/leaders/page/2

我使用 $this->uri->segment(3) 获取我的数据库查询的页码,因此页码位于正确的段中。为了仔细检查,我将 $config['uri_segment'] 值设置为 1,2,3,4,5,6 以确保确定。

我在写这篇文章时发现了问题,但我仍然很困惑

然后我想也许 url 本身有问题,因为我有一条路由将它定向到 Controller 中的索引方法。这是我的路由文件的样子

routes.php

$route['leaders/page/(:num)'] = 'leaders/index';
$route['leaders/page'] = 'leaders/index';

然后我尝试为分页配置设置 base_url 以将其直接发送到索引,如下所示:

$config['base_url'] = base_url . 'leaders/index';

现在它似乎工作正常。但是我如何才能让它与我之前的 url 结构一起工作呢?我只是觉得它看起来更好,我真的不需要 Controller 中的方法。我的 routes.php 文件中是否存在冲突?

谢谢

最佳答案

定义 cur_page 并定义 controller 如下:

public function index($page=''){
    //...
    $page = ($page!='')? $page : 0;
    $config["cur_page"] = $page;

    //...

}

关于php - Codeigniter 分页第一页始终是当前页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939040/

相关文章:

mysql - 当时间戳比当前时间早 X 分钟时删除 Codeigniter DB

mysql - Join 未按预期填充对象图

php - CodeIgniter 中用于获取 select_avg 事件记录结果的列键

php - 分页更新数字

symfony - 如何获取KNP分页器的 Twig 中的分页方向?

php - JSON 请求总是返回 null

php - FormPanel 不在 Firefox 中上传文件

php - 如何在 MySQL/PHP 中插入和读取时间/日期?

javascript - 使用沙箱/隔离执行 sql 查询

PHP 数组分页