2013-05-15 30 views
5

我有一個名稱和電子郵件字段的網絡表單。當提交表格時,姓名和電子郵件應該存儲在數據庫中,並且應該開始下載PDF文件。如何覆蓋drupal7中的Web表單提交功能?

我的問題是如何重寫Web窗體的提交功能,以便我可以在那之後添加額外的功能?

+0

看看hook_form_alter()和提交處理程序。這裏的例子:http://drupal.stackexchange.com/questions/18641/how-do-i-alter-the-form-submission-handler –

回答

12

您將需要創建一個自定義模塊hook_form_alter()實現。上述

function [YOUR_MODULE]_form_alter(&$form, &$form_state, $form_id) 
{ 
    if($form_id == "YOUR_FORM_ID") 
    { 
     // target the submit button and add a new submission callback routine to the form 
     $form['#submit'][] = 'YOUR_SUBMISSION_CALLBACK_FUNCTION'; 
    } 
} 

的代碼將執行新的回調函數YOUR_SUBMISSION_CALLBACK_FUNCTION形式的默認回調函數。

爲了讓您的新的回調函數調用之前形式的默認回調函數,使用下面的代碼而不是上面給:

array_unshift($form['#submit'], 'YOUR_SUBMISSION_CALLBACK_FUNCTION'); 

要取消表單的默認回調函數,並迫使它使用功能ONLY,使用下面

$form['#submit'] = array('YOUR_SUBMISSION_CALLBACK_FUNCTION'); 

希望這有助於代碼。

+2

你的答案太說明了。保持!!! – Pupil

+0

但是我們如何在這個提交函數中獲取提交值?我嘗試了dpm($ form)並找不到值 – pal4life

+0

Coolio發現它,必須使用參數作爲&$ form,&$ form_state初始化函數,然後找到我想要的值 – pal4life