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();?>

 

 

發表迴響