2013-09-22 83 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