0

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-b​​eing-called-twice

我尝试使用 $form_state['redirect'] = false 但对我不起作用。

有人知道任何干净的方法吗?谢谢

4

1 回答 1

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(); 
}
于 2012-12-18T11:06:07.950 回答