사용자 정의 테이블의 데이터를 사용하여 호출기로 정렬 가능한 테이블을 작성하는 방법은 무엇입니까?


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

나는 모양을 가지고 가고 드루팔 7 모두를 pager_query하고 tablesort_sql지금은 사라 졌어요. 대신 PagerDefault클래스를 사용하여 DBTNG를 사용하여 호출기 쿼리를 작성할 수 있습니다. Drupal 6에서와 같이 정렬 가능한 테이블을 쿼리에 첨부하는 간단한 API에 대한 단서를 찾을 수 없었습니다.

그렇다면 사용자 정의 테이블에서 데이터를 가져 오는 호출기가있는 정렬 가능한 테이블을 어떻게 작성합니까?

답변:


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

방법 : 모듈을 DBTNG로 변환 , 동적 쿼리 : 테이블 정렬확장기를 참조하십시오 .


출력에 실제 호출기를 추가하는 것을 잊지 마십시오 : // 빌드 테이블. $ output = theme ( 'table', array ( 'header'=> $ header, 'rows'=> $ rows, 'empty'=> t ( '사용 가능한 문자열이 없습니다.'))); // 호출기를 추가합니다. $ output. = 테마 ( 'pager');
kbrinner

6

TableSortPagerDefault익스텐더를 사용하십시오 .

$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 플러그인 DataTable을 뷰 스타일 및 호출 가능한 테마 함수로 Drupal에 통합합니다. DataTables를 사용하면 다음을 포함하여 테이블에 동적 기능을 추가 할 수 있습니다.

  • 가변 길이 페이지 매김
  • 즉각적인 필터링
  • 데이터 유형 감지를 통한 정렬
  • 열 너비를 스마트하게 처리
  • 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.