我已经在近十个模块中使用了分页库,没有任何问题,但在最后一个模块中失败了(最重要的)。
此部分的路由是:
$route['candidate/sort/(:any)/(:any)/page/(:num)'] = 'candidate/sort/$1/$2/$3';
我的控制器
public function sort($type, $id, $page = 1) {
/* Load Config */
$data = $this->data;
$data['sub_active'] = 'candidate';
$data['type'] = $type;
/* Get Candidates */
$total = $this->candidates->getTotal($type, $id);
if(($this->limit >= $total) && ($page > 1)) {
$data['candidates'] = $this->candidates->getCandidates(1, $this->limit, $type, $id);
}elseif(((($this->limit * $page) - $this->limit) >= $total) && ($page > 1)) {
$data['candidates'] = $this->candidates->getCandidates(ceil($total / $this->limit), $this->limit, $type, $id);
}else{
$data['candidates'] = $this->candidates->getCandidates($page, $this->limit, $type, $id);
}
/* Pagination */
$this->load->library('pagination');
# Config Pagination
$data['cms']['tables']['total_rows'] = $total;
$data['cms']['tables']['per_page'] = $this->limit;
$data['cms']['tables']['first_url'] = base_url($data['sub_active'].'/sort'.'/'.$type.'/'.$id);
$data['cms']['tables']['base_url'] = base_url($data['sub_active'].'/sort'.'/'.$type.'/'.$id.'/page');
$data['page'] = $page;
$data['total_pages'] = ceil($total / $this->limit);
$data['total'] = $total;
# Initialize Pagination
$this->pagination->initialize($data['cms']['tables']);
$data['pagination'] = $this->pagination->create_links();
/* Display Template */
$this->twig->display('pages/list_candidate.htm', $data);
}
Base first url = myweb.com/candidate/sort/$type/$id
and base url = myweb.com/candidate/sort/$type/$id/page
但是分页不起作用,它始终是相同的页面(本例中的第1页)。我在其他控制器中使用相同的模式,它工作正常,只是失败了。
提前致谢。
答案 0 :(得分:3)
我终于找到了答案:
$config['uri_segment'] = 6;
那是因为codeigniter没能很好地检测到URL。
答案 1 :(得分:1)
很好,我很高兴你找到了Tunnecino的答案! 但我认为需要进一步解释,为什么
根据我们的wonderful CI user guide,以下是我们如何确定uri_segment以便不再犯同样的错误:)
$this->uri->segment(n)
允许您检索特定细分。其中n是您要检索的段号。细分从左到右编号。例如,如果您的完整网址是:
http://example.com/index.php/news/local/metro/crime_is_up
细分数字是这样的:
1.news
2.local
3.metro
4.crime_is_up
默认情况下,如果段不存在,则函数返回FALSE(布尔值)。有一个可选的第二个参数,允许您在缺少段时设置自己的默认值。例如,这将告诉函数在发生故障时返回零数字:
$product_id = $this->uri->segment(3, 0);