hook_form被调用两次

时间:2012-12-14 08:01:10

标签: drupal drupal-7

hook_form被调用两次

/**
* Implements hook_form_alter().
*/
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'user_register_form') {
    $form_state['redirect'] = false;
    my_function();      
  }
}

my_function()调用两次,我只需要一次。

我读过这篇文章:

https://drupal.stackexchange.com/questions/22881/hook-form-being-called-twice

我尝试使用$ form_state ['redirect'] = false但不能正常工作。

任何人都知道干净的方式吗?感谢

1 个答案:

答案 0 :(得分:2)

在我看来,你应该在你自己的提交功能中做你正在做的任何事情。

通过将您的函数名称添加到form_alter中的提交数组来添加您自己的提交函数。

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'user_register_form') {
    $form['#submit'][] = 'MYMODULE_submit_function';    
  }
}

function MYMODULE_submit_function(&$form, &$form_state) {
  $form_state['redirect'] = false;
  my_function(); 
}