PHP – Codeigniter 支持 Bootstrap 4 的分頁設定
Codeigniter 夾帶的 pagination 樣式若要套用在 Bootstrap 4 的話,請依照以下步驟
Config 建議總設定
為了讓全域都可以使用,我們在 config/pagintion.php 添加以下程式碼
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); // $config['base_url'] = FALSE; // 跳轉的網址,由外部設定 // $config['per_page'] = FALSE; // 每頁最多的數量,由外部設定 // $config['total_rows'] = FALSE; // 想要分頁的總筆數,由外部設定 // $config['uri_segment'] = FALSE; // URI 哪個字段包含了頁數。因為使用 'page_query_string' 所以該參數無效 $config['num_links'] = 2; // 設定當前頁的前後與後頁的分頁數量,如設定2,代表有2個前頁+2個後頁 $config['use_page_numbers'] = FALSE; // 在 URI 顯示你要分頁項目的索引編號,而不是頁數 $config['page_query_string'] = TRUE; // 不使用字段而使用 GET,可方便 offset 自動對應 $config['enable_query_strings'] = TRUE; // 啟用,若要使用 'page_query_string' $config['query_string_segment'] = 'offset'; // "per_page" 是預設的分頁變數字串,可自訂 $config['reuse_query_string'] = TRUE; // TRUE 當網有 GET 參數的時候,換頁能連帶參數前往下一頁 $config['prefix'] = ''; // 給頁數添加前綴,如 offset=prefix2 $config['suffix'] = ''; // 給頁數添加後綴,如 offset=prefix2suffix $config['use_global_url_suffix'] = FALSE; // TRUE 會使用 application/config/config.php 中的 $config['url_suffix'],重寫 $config['suffix'] 的值。 $config['full_tag_open'] = '<nav aria-label="Page navigation"><ul class="pagination justify-content-center">'; $config['full_tag_close'] = '</ul></nav>'; $config['first_link'] = '<<'; $config['first_tag_open'] = '<li class="page-item"><span class="page-link">'; $config['first_tag_close'] = '</span></li>'; $config['first_url'] = ''; $config['last_link'] = '>>'; $config['last_tag_open'] = '<li class="page-item"><span class="page-link">'; $config['last_tag_close'] = '</span></li>'; $config['next_link'] = '>'; $config['next_tag_open'] = '<li class="page-item"><span class="page-link">'; $config['next_tag_close'] = '</span></li>'; $config['prev_link'] = '<'; $config['prev_tag_open'] = '<li class="page-item"><span class="page-link">'; $config['prev_tag_close'] = '</span></li>'; $config['cur_tag_open'] = '<li class="page-item active"><span class="page-link">'; $config['cur_tag_close'] = '</span></li>'; $config['num_tag_open'] = '<li class="page-item"><span class="page-link">'; $config['num_tag_close'] = '</span></li>'; $config['display_pages'] = TRUE; // 顯示分頁數字,FALSE 僅出現上一頁/下一頁 // 添加屬性如 $config['attributes'] = ['class' => 'myclass']; $config['attributes'] = FALSE;
Controller 範例
<?php class User extends MY_Admin_Controller { public function index() { // 每頁最多的數量 $limit = 10; // 取得要分頁的總筆數 $total_rows = $this->user_model->num( [ 'search' => $this->input->get('search'), ]); // 分頁設定 $this->pagination->initialize( [ 'base_url' => site_url("admin/user/index"), 'total_rows' => $total_rows, 'per_page' => $limit ]); // 查詢的數量,並使用 offset 與 limit 做切割 $param->userlist = $this->user_model->all( [ 'search' => $this->input->get('search'), 'limit' => $limit, 'offset' => $this->input->get('offset') ]); } }
View 範例
<?=$this->pagination->create_links();?>