คุณสร้างตารางที่เรียงลำดับได้ด้วยเพจเจอร์ที่มีข้อมูลจากตารางที่กำหนดเองได้อย่างไร?


19

สำหรับ Drupal 6 คุณสามารถทำสิ่งนี้:

$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);
...

ฉันได้ดูและสำหรับ Drupal 7 และทั้งสองpager_queryและtablesort_sqlตอนนี้หายไป ดูเหมือนว่าPagerDefaultคลาสนั้นสามารถใช้เพื่อสร้างคิวรีเพจเจอร์โดยใช้ DBTNG ฉันไม่สามารถหาเบาะแสใด ๆ บน API แบบง่าย ๆ สำหรับการแนบตารางที่เรียงลำดับได้กับแบบสอบถามอย่างที่ทำใน Drupal 6

ดังนั้นคุณจะสร้างตารางที่เรียงลำดับได้ด้วยเพจเจอร์ดึงข้อมูลจากตารางที่กำหนดเองได้อย่างไร

คำตอบ:


8

คุณใช้ตัวขยายที่เรียกว่า ในกรณีของคุณรหัสจะคล้ายกับรหัสต่อไปนี้

$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();

ดูHowTo: แปลงโมดูลเพื่อ DBTNG , คำสั่งแบบไดนามิก: ตารางการเรียงลำดับและExtenders


อย่าลืมเพิ่มเพจเจอร์จริงในเอาต์พุตของคุณ: // Build table $ output = theme ('table', array ('header' => $ header, 'rows' => $ rows, 'empty' => t ('ไม่มีสตริงให้ใช้'))) // เพิ่มเพจเจอร์ $ output. = ชุดรูปแบบ ('เพจเจอร์');
kbrinner

6

ใช้TableSortและPagerDefaultยืด

$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

ใช้โมดูลDataTables

โมดูล DataTables รวมปลั๊กอิน jQuery DataTables เข้ากับ Drupal เป็นสไตล์มุมมองและฟังก์ชั่นชุดรูปแบบที่เรียกได้ DataTables ให้คุณเพิ่มคุณสมบัติแบบไดนามิกให้กับตารางรวมไปถึง:

  • การแบ่งหน้าความยาวแปรผัน
  • การกรองแบบทันทีทันใด
  • การเรียงลำดับด้วยการตรวจจับชนิดข้อมูล
  • การจัดการความกว้างคอลัมน์อย่างชาญฉลาด
  • Themeable โดย CSS
  • และอีกมากมายที่จะมา ...

ฉันแนะนำไม่ให้เพิ่มโมดูลเพื่อทำสิ่งที่เป็นส่วนหนึ่งของ DB API และสามารถทำได้ด้วยรหัสที่กำหนดเองประมาณ 50 บรรทัดหรือน้อยกว่า
Agi Hammerthief

0

คุณสามารถรวมDrupal 6 tablesort_sql เดียวกันในรหัสของคุณและใช้งานได้ดี

สำหรับเพจเจอร์:

$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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.