如何在drupal7中重写web表单提交函数


how to override a web form submit function in drupal7?

我有一个带有姓名和电子邮件字段的web表单。当表单提交时,名称和电子邮件应该存储在数据库中,并开始下载PDF文件。

我的问题是如何重写web表单的提交功能,以便我可以在此之后添加额外的功能?

您需要创建一个带有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 AFTER表单的默认回调函数。

要使新的回调函数BEFORE成为表单的默认回调函数,请使用以下代码代替上面的代码:
array_unshift($form['#submit'], 'YOUR_SUBMISSION_CALLBACK_FUNCTION');

要取消表单的默认回调函数并强制它使用您的函数ONLY,使用下面的代码

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