2013-05-15 31 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