[CakePHP] Phân Trang Cơ Bản Trong CakePHP

cakephp

cakephp framework

Việc phân trang cho dữ liệu trong CakePHP được tiến hành không mấy phức tạp và  được CakePHP hỗ trợ rất tốt, nắm được nguyên lý sử dụng bạn có thể dễ dàng phân trang dữ liệu ra view và sắp xếp lại cho đẹp mắt thay vì xổ một loạt bài viết từ trên xuống, vừa mất cân đối lại gây choáng cho người đọc.
Hôm nay worm sẽ hướng dẫn việc phân trang trên CakePHP cơ bản nhất. Để khai báo cho Controller biết sẽ phân trang dữ liệu
bạn cần khai báo biến $paginatehelpers là Pageinator vào class cho Controller :

Demo ở đây sẽ sử dụng Controller là Products và Model của nó là Product tương ứng trong database là table products, các bạn phải có đủ các thành phần đó để demo, ở đây không đề cập đến việc tạo cấu trúc MVC nữa.

Sử dụng biến $paginate trong index action

Ở đây sẽ lấy 20 sản phẩm trong Model Product rồi truyền ra view theo biến Products sắp xếp giảm dần theo id sản phẩm, ngoài ra trong điều kiện lọc của biến $paginate bạn có thể thêm các điều kiện lọc khác theo cấu trúc lấy dữ liệu bình thường, ví dụ :

Như vậy là việc phân trang của bạn đối với Controller coi như xong, việc tiếp theo là hiển thị dữ liệu ra view. Tạo view với tên index.ctp trong thư mục views/products/index.ctp

Biến truyền ra view trên Controller Products, Model Product có các trường :

Hiển thị chi tiết

Giải thích :

$this->Paginator->prev() : Hiển thị đường dẫn đến trang liền trước.
$this->Paginator->number() : Hiển thị trang hiện tại đang truy cập.
$this->Paginator->next() : Hiển thị đường dẫn đến trang kế tiếp.
$this->Paginator->counter() : Hiển thị tổng số trang trong Model có thể index được.

Demo :

phan trang trong cakephp

Mặc định CakePHP sẽ lấy giá trị trên địa chỉ trình duyệt là page:<Số trang> (Vd : /page:2) để xác định tham số phân trang.

Trên đây là bước cơ bản để phân trang dữ liệu, với việc phân trang sẽ giúp cho trang web hiển thị gọn gàng hơn. Nếu có lỗi xảy ra
vui lòng comment bên dưới mình sẽ trả lời.

Comments

comments

Share this Post :

No comments yet.

Please Post Your Comments & Reviews

Your email address will not be published. Required fields are marked *