Phân trang trong CodeIgniter 3x

Bài này giúp các bạn cấu hình phân trang trong CodeIgniter 3x
  • 14:31 09/10/2016
  • Kỳ Nhân
  • 0 Bình luận
  • 1160

Đễ phân trang trong CodeIgniter 3x các bạn cần thực hiện các bước sau: bước đầu tiên là load thư viện pagination

Vào application/core/MY_Controller.php sửa function __construct của class Admin_Controller thành

function __construct() {
        parent::__construct();
        $this->load->helper('form');
        $this->load->library('pagination');
    }

Vào application/controllers/admin/Groups.php sửa function index() thành ( per_page là số dòng để bắt đầu phân trang )

public function index() {
        $config['base_url'] = base_url('admin/groups');
        $config['total_rows'] = $this->db->query("select id from groups")->num_rows();
        $config['per_page'] = 2;
        $config['use_page_numbers'] = true;
        $config['suffix'] = '.html';
        $config['first_url'] = site_url('admin/groups');
        $config['first_link'] = 'Trang đầu';
        $config['last_link'] = 'Trang cuối';
        $this->pagination->initialize($config);
        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 1;
        $start = $page*$config['per_page']-$config['per_page'];
        $limit = $start.",".$config['per_page'];
        $this->data['model'] = $this->db->query("select * from groups order by stt asc, id desc limit $limit")->result();
        $this->render('admin/groups/list');
    }

Vào application/views/admin/groups/list.php thêm dòng code hiển thị phân trang dưới div class table-responsive

<div class="clearfix"></div>
<div class="pagination-page"><?=$this->pagination->create_links();?></div>

Vào assets/admin/css/admin.css chỉnh css cho phân trang đẹp tý.

.pagination-page{
    margin-bottom:20px;
    float:left;
    width:100%;
}
.pagination-page a,
.pagination-page strong{
    float:left;
    min-width:30px;
    padding:0px 5px;
    height:30px;
    text-align:center;
    line-height:30px;
    border:solid 1px #ddd;
    border-right:none;
    font-size:12px;
}
.pagination-page a:last-child,
.pagination-page strong:last-child{
    border-right:solid 1px #ddd;
}
.pagination-page strong{
    background:#000;
    color:#FFF;
    border-color:#000
}
.pagination-page a:hover{
    background:#f5f5f6
}

Vào localhost/ci/admin/groups.html đã hiện phân trang. Bấm vào phân trang báo lỗi 404. Lỗi này xảy ra do chưa cấu hình route.

Vào application/config/routes.php thêm dòng cấu hình vào

$route['admin/groups/:num'] = 'admin/groups';

Refesh lại đường dẫn, thấy phân trang thành công