Drupal 7 网络表单重定向

Drupal 7 Webform redirect

我们有一个 Drupal 7 网络表单,在成功提交后会重定向到 url。

我们需要做的是,如果用户再次登陆同一个网络表单并且已经提交,则重定向用户。

我们是否需要一个模块,或者以编程方式进行?

提前致谢。

我查看了 webform 模块,没有找到任何在用户已经提交表单的情况下重定向用户的设置,所以我认为您需要以编程方式进行。

注意:通过使用规则模块,可以在没有自定义模块的情况下实现。这个我没试过。

要以编程方式执行此操作,您可以执行如下操作。它实现 hook_node_view() 并检查用户是否已经使用网络表单 api 函数 webform_get_submission_count() 提交了任何内容。 (编辑:此示例中的自定义模块称为 example_webform

<?php

/**
 * Implements hook_node_view().
 */
function example_webform_node_view($node, $view_mode, $langcode) {
  global $user;
  module_load_include('inc', 'webform', 'includes/webform.submissions');
  $submission_count = webform_get_submission_count($node->nid, $user->uid);
  if (!empty($submission_count) && $submission_count > 0) {
    $redirect = $node->webform['redirect_url'];
    drupal_goto($redirect);
  }
}

现在它将重用提交表单时使用的页面,因此如果您选择这样做,请记住让成功页面反映这一点。 (例如,如果用户第二次登陆成功页面,显示 "your post has been saved" 会很奇怪。)或者您可以将 $redirect 替换为另一个页面,而不是来自 webform 设置的页面。

另请注意,如果启用此功能,网络表单仍会添加消息 "You have already submitted this form. View your previous submissions."。

这是我们最终采用的解决方案。

  1. 我保存了网络表单并将其作为一个块提供
  2. 我创建了一个页面来保存网络表单
  3. 我将块配置为显示在页面内容上方
  4. 在页面内容中我放入了一些 javascript 来检测表单元素是否存在 - 如果没有转发到正确的 url

因此网络表单在提交时正确重定向(在网络表单设置中设置),然后如果用户返回该页面并完成网络表单则重定向。