0

I am trying to rebuild a form in Drupal 7. I know its 'form_build_id' (e.g. form-_eNZLqaZWy7-6kYuGma5Cxg1Gru7Tmr9W2tsofSJxSg)

I defined this hook_menu and menu callback function:

/**
 * Implements hook_menu().
 */
function set_menu_menu() {
  $items['admin/structure/set_menu/rebuild/%'] = array(
    'title' => 'Rebuilt',
    'page callback' => 'set_menu_ajax_rebuild',
    'page arguments' => array(4),
    'access callback' => TRUE,
  );
  return $items;
}

function set_menu_ajax_rebuild($form_build_id) {
$form_state = form_state_defaults();
$form = form_get_cache($form_build_id, $form_state);

$form_state['no_redirect'] = TRUE;

// @see drupal_rebuild_form()

$form_state['set_menu']['count']++;
$form_state['rebuild'] = TRUE;

drupal_process_form($form['#form_id'], $form, $form_state);

}

I would like to rebuild a form by hitting url like this http://www.example.com/admin/structure/set_menu/rebuild/form-mQVd8FeimUAba8xuro38Q2_4phHZ6gupegEuY_ddKLs - this url displays no error but it does not rebuild my form.

The code never rebuilds any form. How can I rebuild a form?

Thank you, Martin.

MPeli
  • 570
  • 1
  • 8
  • 19

1 Answers1

0
  1. What does print_r return for the value of ($form_state['always_process']) and ($form_state['programmed']) ?

  2. Confirm you're not getting any validation errors which will stop $form_state rebuild.

  3. It also could be that no_redirect that's keeping the form from being rebuilt, but I'd have to see more of what you're trying to do here.

Forest
  • 808
  • 6
  • 9
  • 1. programmed, process_input, redirect, submittedd, executed are set to false. Always process is not set at all. 2. I get no validation error. 3. no_redirect is set to 1. – MPeli May 02 '12 at 17:51