2012-12-14 3 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 [ '리디렉션'] 시도하지만 말해도을 작동하지 않습니다

는이 게시물을 읽어 보시기 바랍니다.

누구나 쉽게 할 수 있습니다. 감사합니다

+0

이전에이 문제가 있었지만 정확한 것을 기억하지 못했습니다. 그러나 form 객체를 인쇄하면 form_validate 배열과 form_submit 콜백 배열이 표시되므로 form_submit 함수에 하나의 콜백 만 있는지 확인하면됩니다. –

+0

어떻게 각각의 별도의 호출에서 폼의 내용을 볼 수 있습니까?, 미안 해요 내 영어와 thaks 대답 :) – 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(); 
} 
관련 문제