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.

4

1 回答 1

0
  1. print_r 为 ($form_state['always_process']) 和 ($form_state['programmed']) 的值返回什么?

  2. 确认您没有收到任何将停止 $form_state 重建的验证错误。

  3. 也可能是 no_redirect 阻止了表单的重建,但我必须在这里看到更多你想要做的事情。

于 2012-05-01T17:23:16.013 回答