5
function mymodule_search_form($form, &$form_state) {

  $form..... define the form here

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Search',
  );

  return $form;
}

function mymodule_search_form_submit($form, &$form_state) {

  //process the form and get result 
  $output = this is the result with a table of data.
  //I want to display the result table here.

 //Now I can only use drupal message to display on top.
 drupal_set_message($output);

  return;
}

基本的に、データベースから何かを検索するためのフォームが必要です。送信をクリックして検索し、結果を取得します。

同じフォームページのフォーム直下に結果を表示したい。 元のフォームページだけで、別のページに移動しないでください。

フォームはクリーン/元の状態にリセットできますが、これで問題ありません。

http://drupal.org/node/542646 この議論は私が望んでいるものですが、確かな結果/解決策はないようです。

4

1 に答える 1

10

出力テーブルを に隠し、$form_stateフォームを再構築するように設定し、元のフォーム関数に存在する場合はそれを表示できます。

function mymodule_search_form($form, &$form_state) {

  $form..... define the form here

  if (!empty($form_state['results_table'])) {
    $form['results_table'] = array('#markup' => $form_state['results_table']);
  }

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Search',
  );

  return $form;
}

function mymodule_search_form_submit($form, &$form_state) {
  $form_state['results_table'] = function_to_get_table();
  $form_state['rebuild'] = TRUE;
}
于 2013-03-24T14:32:27.300 に答える