2010-03-30 25 views
5

Ok, tôi đã làm theo hướng dẫn trong ví dụ một cách hoàn hảo. Cuối cùng, phân trang hoạt động, loại.Codeigniter Pagination - Tôi stumped

Tôi nhận được tất cả các trang được liệt kê: 1 | 2 | > | Cuối cùng. Vv

Phương thức đầu tiên đang hoạt động, giống như vậy. Tôi cũng đã thực hiện truy vấn chính xác, vì mỗi liên kết sẽ dẫn đến truy vấn chính xác.

Tuy nhiên, khi tôi nhấp vào số 2, nó sẽ hiển thị cho tôi bộ sản phẩm tiếp theo chính xác, nhưng nó sẽ hiển thị số trang từ trang đầu tiên.

Bất kể nút phân trang nào tôi nhấp vào, sẽ trả về bộ phân trang chính: 1 (đã chọn) | 2 | > | Cuối cùng. Nó không bao giờ thay đổi! Tôi mất kiên nhẫn, ai đó có thể giúp tôi?

+1

Can bạn đăng mã của bạn để phân trang để chúng tôi có thể có ý tưởng về những gì đang diễn ra. – Cory

Trả lời

9

Tôi nghĩ rằng tôi có thể biết những gì đang xảy ra. Bạn cần phải thông báo cho thư viện pagination phân đoạn của URL chứa offset.

Ví dụ, nếu URL của bạn là/products/duyệt/all/20, bạn cần phải nói với CodeIgniter rằng phân khúc thứ 4 giữ bù đắp

$config['uri_segment'] = 4; 

Giá trị mặc định cho thư viện được URL phân khúC# 3. Nếu bù đắp trong URL của bạn không ở vị trí 3 và bạn quên nói cho thư viện pagination này, nó sẽ diễn giải phân đoạn sai như là offset. Điều này có thể dẫn đến loại hành vi mà bạn mô tả ở trên, nơi phân trang dường như không thay đổi.

+0

Bạn đã làm được! Tôi không tìm thấy cấu hình đó trong tài liệu, nhưng nó làm cho nó hoạt động đúng !! WOOHOO! Bạn đá. – willbeeler

+2

Thats tuyệt vời. Tôi chỉ biết điều đó bởi vì tôi đã trải qua cùng một nỗi đau bản thân mình khi tôi bắt đầu sử dụng các pagination :-) Tôi nhớ nhận được hành vi tương tự và tự hỏi những gì địa ngục đã xảy ra. –

0

Ví dụ nào?

echo $this->pagination->create_links(); 

^^ Đây có phải là quan điểm của bạn không?

1

Tôi cũng gặp phải lỗi tương tự và cuối cùng cũng có thể khắc phục. Chỉ cần nghĩ để chia sẻ kịch bản mã, có thể ai đó sẽ có thể sử dụng nó.

=====> Bộ điều khiển

// Default function 
function index() 
{ 
    // Display listing  
    $this->listing();   
} 

function listing($argDataArr = array()) 
{ 

    // Initialize pagination 
    $pageArr['base_url'] = $this->config->item('categoryBeAction')."/listing"; 
    $pageArr['total_rows'] = 15; //assume 
    $pageArr['per_page'] = 5; //assume 
    //You need to tell the pagination library which segment of the URL holds the offset.   
    $pageArr['uri_segment'] = 4; //URL eg: http://localhost/myproject/index.php/backend/category/listing/5 
    $this->pagination->initialize($pageArr); 

    // Get list of categories 
    // Create data array and pass data to get function 
    $dataArr['limitRows'] = $pageArr['per_page']; 
    $dataArr['limitOffset'] = $this->uri->segment(4); //the dynamic value from this segment will be used as offSet 
    $viewArr['listArr'] = $this->category_model->get($dataArr); 

    //rest of the code... 

} 

======> Mẫu

function get($argDataArr = array()) 
{ 

    //Select the fields required 
    $this->db->select('id, name, parent_id, status'); 
    $this->db->from($this->config->item('tbl_category','dbtables')); 

    $this->db->where('parent_id', $parentId); 
    $this->db->limit($argDataArr['limitRows'], $argDataArr['limitOffset']); 
    $this->db->order_by("name", "asc"); 
     $query_result = $this->db->get(); 

    return $query_result; 
} 

======> Xem trang

  <!-- Pagination -->      
      <tr> 
      <td align="right"> 
       <?php echo $this->pagination->create_links(); ?>       
      </td> 
      </tr>