Codeigniter 中的分页创建奇怪的链接


Pagination in Codeigniter creating strange links

我正在Codeigniter中做一个分页系统,但有些东西无法正常工作。

我有一个搜索,总共给出了 5 个结果。

如果我每页放 1 个项目,它会创建带有链接的分页

example.com/suppliers/   Page 1
example.com/suppliers/1   Page 2
example.com/suppliers/2   Page 3
example.com/suppliers/3   Page 4
example.com/suppliers/4   Page 5

哪个是正确的

但是如果我每页放 2 个项目,tt 显示为

example.com/suppliers/   Page 1
example.com/suppliers/2   Page 2
example.com/suppliers/4   Page 3

如果我每页放 3 个项目,它显示为

example.com/suppliers/   Page 1
example.com/suppliers/3   Page 2

因此,它以相当于每页结果的数量级跳跃页面。

这是用于生成分页的代码:

//Create the pagination links
$config['base_url'] = base_url().'/suppliers';
$config['total_rows'] = $this->data['count_suppliers'];
$config['per_page'] = RESULTS_IN_SEARCH;    
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['prev_tag_open'] = '<li class="prev">';
$config['prev_tag_close'] = '</li>';
$config['prev_link'] = '<i class="fa fa-chevron-left"></i>';
$config['next_tag_open'] = '<li class="next">';
$config['next_tag_close'] = '</li>';
$config['next_link'] = '<i class="fa fa-chevron-right"></i>';
$config['cur_tag_open'] = '<li class="active"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close']='</li>';
$this->pagination->initialize($config);
$this->data['pagination']=$this->pagination->create_links();

在所附的图像中,您可以看到结果。

分页问题

已解决:将 $config['use_page_numbers'] = TRUE; 添加到分页配置中,并在对数据库执行查询时减去 1,以便第 1 页搜索限制 0, 3 而不是限制 3,3

我认为问题来自base_url().您可以使用site_url()而不是base_url();所以请在此处查看差异。

Base_url - 这是包含分页的控制器类/函数的完整 URL。在上面的示例中,它指向一个名为"Test"的控制器和一个名为"page"的函数。请记住,如果需要不同的结构,可以重新路由 URI。

$this->load->library('pagination');
$config['base_url'] = base_url().'/suppliers';
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
echo $this->pagination->create_links();

请在此处阅读有关分页的更多信息。

您可以

尝试在数组配置键中添加$config['use_page_numbers'] = TRUE以获取数字页面,并且不要在 url 中获取起始编号项。

尝试使用以下代码:-

$config['base_url'] = site_url('suppliers/' . $id);

如果不起作用,则还要添加以下代码:-

$config['uri_segment'] = 4;
$page = ($this->uri->segment($config['uri_segment'])) ? $this->uri->segment($config['uri_segment']) : 0;
$data['topics_array'] = $this->forum->get_topics($id, $config['per_page'], $page);
$data['pagination'] = $this->pagination->create_links();

另请参阅此链接。

如果出现以下情况,则必须将页码的控制器函数设置为 0

public function show_entries($page = 0) {          
    ----
    $config['use_page_numbers'] = TRUE;
    $per_page=2; //what ever
    $config["per_page"] = $per_page;
    -----
}