Мой код пейджера не работает


Я использую следующий код просто для того, чтобы посмотреть, работает ли подкачка в Drupal 7, но у меня возникли проблемы с настройкой его на работу.

$query = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->extend('PagerDefault')
  ->limit(5);

$headers = array(t('node'), t('Title'));
$rows = array();
$result = $query->execute();

foreach ($result as $record) {
  $rows[] .= array($record->nid, $record->title);
}

$output = theme('table', $headers, $rows);
return $output . theme('pager');

Я не очень хорошо разбираюсь в PHP, так что может кто-нибудь, пожалуйста, сказать мне, что я делаю не так?

 2
Author: kiamlaluno, 2011-06-20

1 answers

В вашем коде используется оператор объединения строк с массивом; вам нужен оператор присваивания.

$rows[] = array($record->nid, $record->title);
$headers = array(t('node'), t('Title'));
$rows = array();

$nodes = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->extend('PagerDefault')
  ->limit(5)
  ->execute();

foreach ($nodes as $node) {
  $rows[] = array($node->nid, $node->title);
}

return theme('table', $headers, $rows) . theme('pager');

В зависимости от того, какая функция содержит этот код, он также может быть переписан следующим образом:

$page = array();
$rows = array();

$nodes = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->extend('PagerDefault')
  ->limit(5)
  ->execute();

foreach ($nodes as $node) {
  $rows[] = array($node->nid, $node->title);
}

$page['table'] = array(
  '#rows' => $rows, 
  '#header' => array(t('Node'), t('Title')), 
  '#theme' => 'table', 
  '#empty' => t('No content available.'), 
);

$page['pager'] = array(
  '#theme' => 'pager', 
);

return $page;
 1
Author: kiamlaluno, 2011-06-21 08:29:28