Drupal пейджер с данными формы - PullRequest
1 голос
/ 11 августа 2011

У меня есть форма, которая, очевидно, принимает некоторые элементы, а затем запускает выборку для внешней базы данных. Я могу представить данные обратно без проблем. У меня проблемы с тем, чтобы заставить пейджер отправлять правильно. первоначальный запрос к pager_query () хорош и корректно отображает содержимое и пейджер. Однако, когда я выбираю ссылку на пейджер, пейджер просто перестраивает форму и не отправляет. Я вижу, что запрос GET добавляется к URL-адресу вверху, но это все. Затем я должен вручную отправить форму для корректной работы пейджера. Кто-нибудь видел, чтобы это случилось? Я попытался написать ajax, чтобы перехватить запрос и отправить GET, но все еще сталкивался с той же проблемой.

1 Ответ

1 голос
/ 12 августа 2011

Есть несколько ловушек при использовании пейджеров Drupal.Во-первых, если у вас есть несколько pager_query () на одной странице, то каждый элемент 'pager' на странице будет по умолчанию ссылаться только на первый запрос.Поэтому первое, что вы должны сделать, это убедиться, что вы не используете несколько запросов pager к различным базам данных.Если вы используете Drupal 7.0, то вот как должен выглядеть правильно сформированный пейджинговый запрос:

$query = db_select('node','n')->extend('PagerDefault');
$query->limit(10);
$query->fields('n',array('nid',))
$query->orderBy('n.nid','DESC');

Если вам удастся найти повторяющиеся пейджинговые запросы, вы можете установить, какой пейджинговый запрос будет ссылаться, используя

$pager = array(
  'tags' => array(),
  'element' => 1, /* 0 for first query on the page, 1 for second etc. */
  'quantity' => 5,
  'parameters' => array(),
);

$form['table'] = array(
        '#markup' => theme_table($variables) . theme_pager($pager),
);

Если вы используете Drupal 6, решение может немного отличаться.

...