2013-09-22 67 views
6

我拉我的头发就这一个。我正在使用CodeIgniters分页库,现在它始终停留在第1页作为当前页面。我检查了一堆StackOverflow问题,并没有像其他人一样的问题。笨分页第一页始终是当前页面

这里是我的URL结构

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'] = '&laquo; First'; 
    $config['last_link'] = 'Last &raquo;'; 
    $config['use_page_numbers'] = true; 
    $config['uri_segment'] = 3; 

    $this->pagination->initialize($config); 

分页代码时,我呼应,它看起来像它的工作原理视图的分页。每个链接上的网址都是正确的,一切都很正常。最后一个链接显示最后一页网址,当前页面为1.然而,当我点击页面2或分页中的任何其他页面时,它仍然显示第1页作为当前页面,即使url如下

website.com/leaders/page/2 

我用$this->uri->segment(3)抢我的数据库查询的页面数量,以便页码为右段。只是为了确认一下,我将$config['uri_segment']的值设置为1,2,3,4,5,6。

我发现了问题,而写这一点,但我仍然感到困惑

后来我想也许有一些事情与URL本身,因为我有在控制器将其引导到索引方法的途径。下面是我的路线文件看起来像

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

使用这个在你的代码,希望这将与工作

if ($this->uri->segment(3) > 0) { 
    $offset = $this->uri->segment(3) * $config['per_page'] - $config['per_page']; 
} else { 
    $offset = $this->uri->segment(3); 
} 
+0

嗨rafi_ccj,感谢您的答复,但问题似乎是在分页类中处理路由的方式。我改变了base_url配置指向索引而不是页面,并且没有修改它完美工作的代码。 – JoeMoe1984

6

定义cur_page并定义controller,如:

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

    //... 

} 
+0

工作对我来说... – 4naxr

+0

虽然它不是在3.x版的文件,它仍然是工作 – muzaffar

+0

完美!它为我工作。非常感谢 – BoCyrill