2012-12-14 76 views
0

hook_form被稱爲兩次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 [ '重定向'] = false,但不工作的印版。

任何人都知道任何干淨的方式來做到這一點?謝謝

+0

我之前有過這個問題,不記得我做的確切的事情。但是,如果您打印表單對象,您將看到一個form_validate數組和一個form_submit回調數組,您只需確保form_submit函數只有一個回調。 –

+0

如何在每個單獨的調用中看到表單的內容?,對不起我的英語,並尋求答案:) – mjimcua

+2

它應該被調用兩次......每當構建表單時調用'hook_form_alter()',並且該表單在顯示和驗證/提交 – Clive

回答

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(); 
} 
相關問題