Drupal 7 Webform重定向

时间:2017-03-31 21:31:07

标签: redirect drupal-7 drupal-webform

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

要以编程方式执行此操作,您可以执行以下操作。它实现hook_node_view()并使用webform 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);
  }
}

现在它将重用表单提交时使用的页面,因此如果您选择这样做,请记住使成功页面反映这一点。 (例如,成功页面说'#34;你的帖子已被保存&#34;如果用户第二次登陆它会很奇怪。)或者你可以将$redirect替换为另一页而不是来自webform设置的那个。

另请注意,网络表单仍会添加消息&#34;您已提交此表单。查看您之前提交的内容。&#34;如果启用了这个。

答案 1 :(得分:0)

所以这是我们最终选择的解决方案。

  1. 我保存了网络表单并将其作为一个块提供
  2. 我创建了一个用于保存webform的页面
  3. 我将块配置为显示在页面内容上方
  4. 在页面内容中我添加了一些javascript来检测表单元素是否存在 - 如果没有转发到正确的URL
  5. 因此,webform在提交时正确地重定向(在webform设置中设置),然后在用户重新登录该页面并完成网络表单时重定向。