2013-09-22 33 views
6

Tôi đang kéo tóc ra trên trang này. Tôi đang sử dụng thư viện pagination CodeIgniters và ngay bây giờ nó luôn luôn bị mắc kẹt trên trang 1 như trang hiện tại. Tôi đã kiểm tra một loạt các câu hỏi StackOverflow và tôi không có vấn đề tương tự như bất cứ ai khác.Trang đầu tiên của Codeigniter Pagination luôn là trang hiện tại

Dưới đây là cấu trúc url của tôi

website.com/leaders/page/[page_number] 

Đây là mã pagination trong điều khiển của tôi

$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); 

Khi tôi echo pagination trong giao diện có vẻ như nó hoạt động. Các url trên mỗi liên kết là chính xác và mọi thứ đều ổn. Liên kết cuối cùng hiển thị url trang cuối cùng và trang hiện tại là 1. Tuy nhiên khi tôi nhấp vào trang 2 hoặc bất kỳ trang nào khác từ trang, nó vẫn hiển thị trang 1 làm trang hiện tại mặc dù url như sau

website.com/leaders/page/2 

Tôi đã sử dụng $this->uri->segment(3) để lấy số trang cho các truy vấn cơ sở dữ liệu của tôi để số trang nằm trong phân khúc phù hợp. Chỉ cần kiểm tra lại, tôi đặt giá trị $config['uri_segment'] thành 1,2,3,4,5,6 chỉ để đảm bảo.

tôi phát hiện ra vấn đề trong khi viết những dòng này nhưng tôi vẫn còn lẫn lộn

Sau đó, tôi nghĩ có lẽ có cái gì đó đang xảy ra với các url bản thân như tôi có một lộ trình chuyển nó vào phương pháp chỉ số trong bộ điều khiển . Đây là những gì tập tin tuyến đường của tôi trông giống như

routes.php

$route['leaders/page/(:num)'] = 'leaders/index'; 
$route['leaders/page'] = 'leaders/index'; 

Sau đó, tôi cố gắng thiết lập BASE_URL cho cấu hình pagination để gửi nó vào chỉ số trực tiếp như vậy:

$config['base_url'] = base_url . 'leaders/index'; 

Bây giờ nó có vẻ hoạt động tốt. Nhưng làm thế nào để tôi làm cho nó hoạt động với cấu trúc url mà tôi đã có trước đây? Tôi chỉ nghĩ rằng nó trông đẹp hơn và tôi không thực sự cần một phương pháp trong bộ điều khiển cho việc này. Có một cái gì đó xung đột trong tập tin routes.php của tôi?

Cảm ơn

Trả lời

0

Sử dụng này trong mã của bạn, hy vọng điều này sẽ work-

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

Hi rafi_ccj, nhờ trả lời nhưng vấn đề dường như là cách các tuyến được xử lý trong lớp phân trang. Tôi đã thay đổi cấu hình base_url để trỏ đến chỉ mục thay vì trang và không sửa đổi mã mà nó hoạt động hoàn hảo. – JoeMoe1984

6

xác định cur_page và xác định controller như:

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

    //... 

} 
+0

đã hoạt động đối với tôi ... – 4naxr

+0

Mặc dù nó không có trong tài liệu v3.x, nhưng nó vẫn hoạt động – muzaffar

+0

Hoàn hảo! nó làm việc cho tôi. Cảm ơn rất nhiều – BoCyrill

Các vấn đề liên quan