Pagination - Phân trang trong cakephp 1.1.x

Pagination - Phân trang trong cakephp 1.1.x

Đối với cakephp 1.1.x, hiện tại chưa hỗ trợ sẵn việc phân trang giống như trong cakephp 1.2. Đối với cakephp 1.2 bạn chỉ việc dùng sẵn helper là có thể phân trang được. Với bản cakephp 1.1 việc phân trang sẽ do chúng ta tự làm. Sau đây tôi xin hướng dẫn các bạn phân trang trong cakephp bằng components và helper của Andy Dawson.

Cài đặt:

- Bạn lưu file http://i-php.net/2008/10/pagination-component/ thành /app/controllers/components/pagination.php

- Bạn lưu file http://i-php.net/2008/10/pagination-helper/ thành /app/views/helpers/pagination.php

- Bạn lưu file http://i-php.net/2008/10/pagination-element/ thành /app/views/elements/pagination.thtml

Sử dụng trong controller

Trong controller, khi nào muốn sử dụng hàm phân trang thì ta chỉ việc sử dụng components và helper pagination mà chúng ta vừa tạo ra ở trên. Ta sẽ khởi tạo chúng trước khi thực hiện lấy dữ liệu. Ví dụ như chúng ta sẽ sử dụng chúng trong controller Post như sau:

    <?php
    class PostsController extends AppController
    {
    var $name = 'Posts'; // for PHP4 installs
    var $components = array ('Pagination'); // Added
    var $helpers = array('Pagination'); // Added

    function index() {
    $criteria=NULL;
    list($order,$limit,$page) = $this->Pagination->init($criteria); // Added
    $data = $this->Post->findAll($criteria, NULL, $order, $limit, $page); // Extra parameters added

    $this->set('data',$data);
    }
    }
    ?>

Sử dụng trong views

Ta sẽ tạo ra một views post mà sử dụng phân trang ở trên.

    <h1>Paginated Posts Index</h1>
    <table>
    <?php
    $pagination->setPaging($paging); // Initialize the pagination variables
    $th = array (
    $pagination->sortBy('id'),
    $pagination->sortBy('title'),
    $pagination->sortBy('created')
    ); // Generate the pagination sort links
    echo $html->tableHeaders($th); // Create the table headers with sort links if desired

    foreach ($data as $output)
    {
    $tr = array (
    $output['Post']['id'],
    $html->link($output['Post']['title'], "/Posts/View/{$output['Post']['id']}"),
    $output['Post']['created']
    );
    echo $html->tableCells($tr,array('class'=>'altRow'),array('class'=>'evenRow'));
    }
    ?>
    </table>
    <? echo $this->renderElement('pagination'); // Render the pagination element ?>

Trong view trên ta có sử dụng hàm sortBy() trong helper Pagination, hàm này sẽ sắp xếp lại dữ liệu theo các trường trong model khi ta kích vào đấy theo thứ tự tăng dần hoặc giảm dần. Hàm setPaging() sẽ xác định xem hiện ta đang ở trang nào. Việc hiện thị các trang cũng như các tuỳ chọn của trang sẽ được thực hiện qua hàm renderElement(), hàm này sẽ gọi pagination.thml trong element ra để thực hiện hiển thị chức năng phân trang.

Tags: 
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Cặp đôi đẹp giữa 1m26 và 1m75

Cặp đôi đẹp giữa 1m26 và 1m75

Bỏ qua những cặp mắt tò mò và ái ngại, cặp đôi chênh lệch nhau tới nửa mét này vẫn cực kỳ hạnh phúc khi ở bên nhau.

Hướng dẫn nâng cao Layouts với Flexbox trong Drupal

Hướng dẫn nâng cao Layouts với Flexbox trong Drupal

There are problems, however, with float layouts which, if not properly addressed, can create major issues 

 Lập trình Web chuyên sâu với CMS Drupal

Lập trình Web chuyên sâu với CMS Drupal

Khóa học được thiết kế dành cho các học viên là những người yêu thích việc xây dựng website, giúp học viên có đầy đủ kiến thức và kỹ năng để có thể xây dựng một website hoàn chỉnh, đẹp và dễ sử dụng.

Công ty diệt chuột T&C

 

Diet con trung