Drupal: как представить результаты формы на той же странице как форма

Как я распечатал бы результаты представления формы на той же странице как сама форма?

Соответствующий hook_menu:

    $items['admin/content/ncbi_subsites/paths'] = array(
        'title' => 'Paths',
        'description' => 'Paths for a particular subsite',
        'page callback' => 'ncbi_subsites_show_path_page',
        'access arguments' => array( 'administer site configuration' ),
        'type' => MENU_LOCAL_TASK,
    );

обратный вызов страницы:

function ncbi_subsites_show_path_page() {
  $f = drupal_get_form('_ncbi_subsites_show_paths_form');
  return $f;
}

Функция создания формы:

   function _ncbi_subsites_show_paths_form() {
      // bunch of code here

      $form['subsite'] = array(
        '#title' => t('Subsites'),
        '#type' => 'select',
        '#description' => 'Choose a subsite to get its paths',
        '#default_value' => 'Choose a subsite',
        '#options'=> $tmp,
      );

      $form['showthem'] = array(
        '#type' => 'submit',
        '#value' => 'Show paths',
        '#submit' => array( 'ncbi_subsites_show_paths_submit'),    
      );

      return $form;
    }

Отправьте функция (пропущенный проверяют функцию для краткости),

function ncbi_subsites_show_paths_submit( &$form, &$form_state ) {
  //dpm ( $form_state );
  $subsite_name = $form_state['values']['subsite'];
  $subsite = new Subsite( $subsite_name ); //y own class that I use internally in this module
  $paths = $subsite->normalized_paths;

  // build list
  $list = theme_item_list( $paths );
}

Если я печатаю ту переменную $list, это точно, что я хочу, но я не уверен, как получить его в страницу с исходной страницей формы, созданной из 'ncbi_subsites_show_path_page'. Любая справка очень ценится!

7
задан googletorp 27 May 2010 в 14:32
поделиться

1 ответ

Ключевая информация в опубликованной Никитом ссылке - $ form_state ['rebuild'].Вот некоторая информация из документации Drupal 7, которая, как мне кажется, применима к Drupal 6 ...

$ form_state ['rebuild']: Обычно после завершения всей обработки формы и обработчики submit запущены, форма считается выполненной, и drupal_redirect_form () перенаправит пользователя на новую страницу с помощью запроса GET (так что обновление браузера не повторно отправляет форму). Однако, если для параметра 'rebuild' установлено значение ИСТИНА, то новая копия формы немедленно создается и отправляется в браузер; вместо перенаправления. Это используется для многоступенчатых форм, таких как мастера и формы подтверждения . Кроме того, если обработчик проверки формы установил для параметра 'rebuild' значение TRUE и произошла ошибка проверки , то форма перестраивается перед возвратом, включение возможности изменения элементов формы в зависимости от конкретной ошибки проверки.

7
ответ дан 7 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: