6

我正在把头发拉出来。我正在使用 CodeIgniters 分页库,现在它总是卡在第 1 页作为当前页面。我检查了一堆 StackOverflow 问题,我没有遇到和其他人一样的问题。

这是我的网址结构

website.com/leaders/page/[page_number]

这是我的控制器中的分页代码

    $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);

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

website.com/leaders/page/2

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

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

然后我想可能是 url 本身发生了一些事情,因为我有一条路由将它指向控制器中的 index 方法。这是我的路线文件的样子

路由.php

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

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

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

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

谢谢

4

3 回答 3

8

定义cur_page和定义controller如下:

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

    //...

}
于 2014-11-22T17:22:04.960 回答
0

在您的代码中使用它,希望这会奏效-

if ($this->uri->segment(3) > 0) {
     $offset = $this->uri->segment(3) * $config['per_page'] - $config['per_page'];
 } else {
     $offset = $this->uri->segment(3);
 }
于 2013-09-22T07:24:26.233 回答
0

我已经工作了大约 6 个小时以使 CI 分页按预期工作,我不知道是配置元素的顺序还是我的浏览器在跟我开玩笑。

下面是我的配置数组,以便分页正常工作。

如您所见,这是正常代码,但我的问题是,当我第一次渲染时,我的分页视图似乎一切正常,但如果$config['per_page'] = 10;设置为 10,当我点击分页链接的 11 链接时,链接数字 2 显示 Cseguimiento/buscar_reportes/# 并且看起来当前页面是 2 而不是 11。

我很累,我开始改变$config数组的顺序,突然它起作用了。所以我在这里展示它。

$config['base_url'] = base_url().'Cseguimiento/buscar_reportes/';
$config['uri_segment'] = 3;
$config['use_page_numbers'] = TRUE;
$config['first_link'] = FALSE;
$config['last_link'] = FALSE;
$config['next_link'] = '&gt;';
$config['prev_link'] = '&lt;';
$config["full_tag_open"] = '<ul class="pagination">';
$config["full_tag_close"] = '</ul>';
$config["first_tag_open"] = '<li>';
$config["first_tag_close"] = '</li>';
$config["last_tag_open"] = '<li>';
$config["last_tag_close"] = '</li>';
$config["next_tag_open"] = '<li>';
$config["next_tag_close"] = '</li>';
$config["prev_tag_open"] = "<li>";
$config["prev_tag_close"] = "</li>";
$config["cur_tag_open"] = "<li>";
$config["cur_tag_close"] = "</li>";
$config["num_tag_open"] = "<li>";
$config["num_tag_close"] = "</li>";
$config['total_rows'] = $this->mseguimiento->filas($fecha_inicio,$fecha_fin);
$config['per_page'] = 10;
$choice = $config["total_rows"] / $config["per_page"];
$config["num_links"] = round($choice);
$page = $config['uri_segment'] * $config['per_page'];
$this->pagination->initialize($config);
$offset = ($this->uri->segment(3)-1)*$config['per_page'];
$output = array(
    'pagination_link'  => $this->pagination->create_links(),
    'lista_reportes'   => $this->mseguimiento->fetch_details($this->pagination->per_page, $offset,$fecha_inicio,$fecha_fin)
    );
于 2018-05-24T00:28:40.463 回答