Làm thế nào để bạn tạo các bảng có thể sắp xếp với một máy nhắn tin với dữ liệu từ một bảng tùy chỉnh?


19

Đối với Drupal 6, bạn có thể làm một cái gì đó như thế này:

$header = array(
  array('data' => t('Order id'), 'field' => 'order_id'),
  ...
  array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);
$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25;
$result = pager_query($sql, $limit);
...

Tôi đã xem và cho drupal 7 và cả hai pager_querytablesort_sqlbây giờ đã biến mất. Có vẻ như thay vào đó, PagerDefaultlớp có thể được sử dụng để tạo truy vấn máy nhắn tin bằng DBTNG. Tôi không thể tìm thấy bất kỳ manh mối nào trên một API đơn giản để đính kèm một bảng có thể sắp xếp vào truy vấn giống như được thực hiện trong Drupal 6.

Vậy làm thế nào để bạn tạo một bảng có thể sắp xếp với một máy nhắn tin lấy dữ liệu từ một bảng tùy chỉnh?

Câu trả lời:


8

Bạn sử dụng cái gọi là bộ mở rộng. Trong trường hợp của bạn, mã sẽ tương tự như sau.

$header = array(
  array('data' => t('Order id'), 'field' => 'order_id'),
  // ...
  array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);

// Initialize $query with db_select().
$query = db_select('your table name');

// Add the fields you need to query.
// ... 

// Add the table sort extender.
$query = $query->extend('TableSort')->orderByHeader($header);

// Add the pager.
$query = $query->extend('PagerDefault')->limit(25);
$result = $query->execute();

Xem hướng dẫn : Chuyển đổi mô-đun sang DBTNG , Truy vấn động: Sắp xếp bảng và bộ mở rộng .


Đừng quên thêm máy nhắn tin thực tế vào đầu ra của bạn: // Xây dựng bảng. $ output = theme ('bảng', mảng ('tiêu đề' => $ tiêu đề, 'hàng' => $ hàng, 'trống' => t ('Không có chuỗi.'))); // Thêm máy nhắn tin. $ output. = theme ('máy nhắn tin');
kbrinner

6

Sử dụng TableSortPagerDefaultmở rộng.

$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));

$table_sort = $query->extend('TableSort') // Add table sort extender.
  ->orderByHeader($header); // Add order by headers.

$pager = $table_sort->extend('PagerDefault')
  ->limit(5); // 5 rows per page.

$result = $pager->execute();

2

Sử dụng mô-đun DataTables .

Mô-đun DataTables tích hợp plugin jQuery DataTables vào Drupal dưới dạng kiểu xem và chức năng chủ đề có thể gọi được. DataTables cho phép bạn thêm các tính năng động vào các bảng, bao gồm:

  • Biến chiều dài phân trang
  • Lọc nhanh
  • Sắp xếp với phát hiện kiểu dữ liệu
  • Xử lý thông minh độ rộng cột
  • Có thể sử dụng CSS
  • Và nhiều hơn nữa ...

Tôi khuyên bạn không nên thêm một mô-đun để làm một cái gì đó là một phần của API DB và có thể được thực hiện với khoảng 50 hoặc ít hơn các dòng mã tùy chỉnh.
Búa búa Agi

0

Bạn chỉ có thể bao gồm cùng một bảng Drupal 6 bảngort_sql trong mã của mình và nó hoạt động tốt.

Dành cho máy nhắn tin:

$count = <Total No. of Table rows>

$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25; //Pager limit

$results = db_query( $sql );
$rows = array();
//Loop through the result.
while ( $row = $results->fetchAssoc() ) {
$rows = <Get your array values for Table row>
}
$current_page = pager_default_initialize($count, $limit);
$chunks = array_chunk($rows,$limit, TRUE);
$output = theme( 'table', array( 'header' => $headers, 'rows' => $chunks[$current_page] ) );
$output .= theme( 'pager', array('quantity',$count ) );
print $output;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.