it-swarm-es.com

¿Cómo se hacen tablas ordenables con un buscapersonas con datos de una tabla personalizada?

Para Drupal 6 podría hacer algo como esto:

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

Eché un vistazo y para drupal 7 y ambos pager_query y tablesort_sql ahora se ha ido. Parece que, en cambio, la clase PagerDefault puede usarse para crear una consulta de buscapersonas usando DBTNG. No pude encontrar ninguna pista en una API simple para adjuntar una tabla ordenable a la consulta como se hace en Drupal 6.

Entonces, ¿cómo se crea una tabla ordenable con un buscapersonas que extrae datos de una tabla personalizada?

20
googletorp

Usas los llamados extensores. En su caso, el código sería similar al siguiente.

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

Consulte Cómo: Convertir un módulo a DBTNG , Consultas dinámicas: Clasificación de tablas y Extensores .

8
Berdir

Utilice los extensores TableSort y 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();
6
Serjas

Utilice el módulo DataTables .

El módulo DataTables integra el complemento jQuery DataTables en Drupal como un estilo de vistas y una función de tema invocable. DataTables le permite agregar características dinámicas a las tablas, que incluyen:

  • Paginación de longitud variable
  • Filtrado sobre la marcha
  • Ordenar con detección de tipo de datos
  • Manejo inteligente de anchos de columna
  • Themeable por CSS
  • Y más por venir ...
2
Satya

Puede incluir el mismo Drupal 6 tablesort_sql en su código y funciona bien.

Para buscapersonas:

$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;
0
Paulraj