我正在把头发拉出来。我正在使用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'] = '« First';
$config['last_link'] = 'Last »';
$config['use_page_numbers'] = true;
$config['uri_segment'] = 3;
$this->pagination->initialize($config);
当我在视图中回应分页时,它看起来像是有效的。每个链接上的网址都是正确的,一切都很好。最后一个链接显示最后一个页面网址,当前页面为1.但是,当我点击第2页或分页中的任何其他页面时,即使网址如下,它仍然显示第1页作为当前页面
website.com/leaders/page/2
我使用$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';
然后我尝试为分页配置设置base_url,将其直接发送到索引,如下所示:
$config['base_url'] = base_url . 'leaders/index';
现在它似乎正常运作。但是我如何使它与我之前使用的url结构一起工作呢?我认为它看起来更好,我真的不需要控制器中的方法。我的routes.php文件中是否存在冲突?
由于
答案 0 :(得分:7)
定义cur_page
并定义controller
,如:
public function index($page=''){
//...
$page = ($page!='')? $page : 0;
$config["cur_page"] = $page;
//...
}
答案 1 :(得分:0)
在你的代码中使用它,希望这会起作用 -
if ($this->uri->segment(3) > 0) {
$offset = $this->uri->segment(3) * $config['per_page'] - $config['per_page'];
} else {
$offset = $this->uri->segment(3);
}
答案 2 :(得分: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'] = '>';
$config['prev_link'] = '<';
$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)
);