Codeigniter分页第一页始终是当前页面

Joe*_*984 6 php pagination codeigniter

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

这是我的网址结构

website.com/leaders/page/[page_number]
Run Code Online (Sandbox Code Playgroud)

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

    $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);
Run Code Online (Sandbox Code Playgroud)

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

website.com/leaders/page/2
Run Code Online (Sandbox Code Playgroud)

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

我写这篇文章时发现了问题,但我仍感到困惑

然后我想也许网址本身就会发生一些事情,因为我有一条路由将它指向控制器中的索引方法.这是我的路线文件的样子

routes.php文件

$route['leaders/page/(:num)'] = 'leaders/index';
$route['leaders/page'] = 'leaders/index';
Run Code Online (Sandbox Code Playgroud)

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

$config['base_url'] = base_url . 'leaders/index';
Run Code Online (Sandbox Code Playgroud)

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

谢谢

小智 7

定义cur_page和定义controller如下:

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

    //...

}
Run Code Online (Sandbox Code Playgroud)


raf*_*afi 0

在您的代码中使用它,希望这会起作用-

if ($this->uri->segment(3) > 0) {
     $offset = $this->uri->segment(3) * $config['per_page'] - $config['per_page'];
 } else {
     $offset = $this->uri->segment(3);
 }
Run Code Online (Sandbox Code Playgroud)