Tiếp nối theo chuỗi bài viết về ZF2, hôm nay mình giới thiệu mọi người cách phân trang data với Adapter NULL được cung cấp trong Zend. Có lẽ khi mọi người tìm kiếm cách phân trang với ZF2 thì đều có nhiều cách, đa số sẽ dùng TableGateWay, nhưng bài hướng dẫn trước của mình lại dùng PDO để truy xuất database nên cũng sẽ có bạn thắc mắc cách xử lý thế nào. ZF2 cũng hiểu điều này nên cung cấp 1 loại Adapter đặc biệt - Adapter NULL - dùng cho chuyện phân trang với PDO.
Việc này cũng không quá khó khăn, đầu tiên, chúng ta cần khai báo 2 namespace mới trong ZF2 để thực hiện việc phân trang dữ liệu như hình bên dưới.
Sử dụng namespace cho việc phân trang dữ liệu trong ZF2 |
Tiếp theo, chúng ta thực hiện việc xử lý phân trang trong action như bên hình bên dưới.
Xử lý phân trang |
Phần thứ 2, phần được high-light code, phần này chính là trọng tâm của bài này. Cụ thể như sau
$paginator = new Paginator(new PageNull($importedData['total']));Tại đây chúng ta khai báo một đối tượng Paginator và tham số truyền vào là PageNull (tức là Zend\Paginator\Adapter\Null khai báo bên trên). Có một lưu ý đó là khi khai báo đối tượng PageNull thì chúng ta cần truyền vào TỔNG SỐ DỮ LIỆU nhận được từ database. Việc lấy TỒNG SỐ DỮ LIỆU này không quá khó với tất cả chúng ta ở đây, nên mình sẽ không nói về điều này.
Việc xử lý cuối cùng tại Controller - Action đó là truyền dữ liệu phân trang qua cho tầng view như sau:
Truyền dữ liệu ra tầng view |
Bây giờ chuyển qua tầng view, chúng ta sẽ dùng 1 view helper của ZF2 để phát sinh ra tầng phân trang như hình bên dưới. Lưu ý, đoạn code bên dưới viết trong tầng view.
Dùng view helper render phân trang |
- Đối tượng paginator đã được tạo từ controller và assign sang view
- Kiểu paginate (thú thật là có 4 kiểu, nhưng mình chưa tìm thấy sự khác biệt gì cho 4 kiểu này nên chỗ này mình xem mạn phép không đề cập)
- Mapping tới file phtml (file view) để render phân trang
- Các giá trị cần assign cho Paginator
Tầng view cho pagination control |
Xem thêm các bài viết khác về Zend Framework 2 tại tmquang6805.blogspot.com
Xem cách truy xuất database thông qua PDO với ZF2
anh chỉ em cách dùng tablegateway để phân trang với?
ReplyDelete