CodeIgniter分页始终显示第1页

时间:2012-12-22 17:26:47

标签: php codeigniter

我已经在近十个模块中使用了分页库,没有任何问题,但在最后一个模块中失败了(最重要的)。

此部分的路由是:

$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页)。我在其他控制器中使用相同的模式,它工作正常,只是失败了。

提前致谢。

2 个答案:

答案 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);