2010-08-25 35 views
1

我正在使用以下邏輯將自定義處理程序添加到由另一個模塊定義的表單。我正在嘗試對錶單數據執行額外的處理。如何訪問自定義表單處理程序中的表單

function my_module_form_alter(&$form, $form_state, $form_id) { 
    if ($form_id == 'my_form') { 
    $form['#submit'][] = 'my_additional_submit_handler'; 
    } 
} 

當然我定義我自己的處理程序稱爲my_additional_submit_handler

function my_additional_submit_handler(){ 

} 

但我怎麼傳遞的形式和它的價值我的自定義處理程序?我嘗試傳遞& $ form,但無法在使用dsm的自定義處理程序中訪問它。是否有一個特殊的語法來傳遞自定義表單處理函數的參數?

回答

3

你試過嗎?它應該按預期工作:

function mymodule_form_alter(&$form, $form_state, $form_id) { 
    if($form_id=="your_form"){ 
    $form['#submit'][] = 'mymodule_form_mysubmit'; 
    } 
} 

function mymodule_form_mysubmit($form, &$form_state){ 
    // $form is your entire form object 
    // $form_state should be your submitted data 
} 
+0

您是否嘗試清除緩存?沒有參數,你的功能是否工作? 此外,我只是讀了這個,也許你可以嘗試在這裏的做法 http://drupal.org/node/144132#custom-params – w00d 2010-08-25 06:37:47

+0

這應該工作。如果沒有,並且由於dsm(「字符串」)也不起作用,我懷疑你並沒有改變表單。在你的hook_form_alter中檢查你的$ form_id。 – 2010-08-25 08:30:07

2

您是否正在尋找$form_state['values']['fieldName']的數據?另外,由於iKid在他的代碼示例中使用了大量代碼,所以您需要在處理函數中使用參數$form and $form_state

相關問題