【问题标题】:how to override a web form submit function in drupal7?如何在 drupal7 中覆盖 Web 表单提交功能?
【发布时间】:2013-05-15 07:43:53
【问题描述】:

我有一个包含姓名和电子邮件字段的网络表单。提交表单后,名称和电子邮件应存储在数据库中,并且应开始下载 PDF 文件。

我的问题是如何覆盖网络表单的提交功能,以便我可以在那之后添加额外的功能?

【问题讨论】:

标签: php drupal drupal-7 drupal-fapi


【解决方案1】:

您需要使用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_FUNCTIONAFTER表单的默认回调函数。

要使您的新回调函数称为 BEFORE 表单的默认回调函数,请使用以下代码而不是上面的代码:

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

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

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

希望对您有所帮助。

【讨论】:

  • 但是我们如何在这个提交函数中获取提交值呢?我试过 dpm($form) 并找不到值
  • Coolio 找到了,只好初始化函数,参数为&$form,&$form_state 然后找到我想要的值
  • 特别注意回调,它不在数组中。
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
相关资源
最近更新 更多