【问题标题】:Drupal 7 Webform redirectDrupal 7 网络表单重定向
【发布时间】:2017-03-31 21:31:07
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

    标签: redirect drupal-7 drupal-webform


    【解决方案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);
      }
    }
    

    现在它将重用提交表单时使用的页面,因此如果您选择这样做,请记住让成功页面反映这一点。 (例如,如果用户第二次登陆成功页面,显示“您的帖子已保存”会很奇怪。)或者您可以将$redirect 替换为网络表单设置之外的另一个页面。

    另请注意,网络表单仍会添加消息“您已提交此表单。查看您以前的提交。”如果启用。

    【讨论】:

    • 谢谢特罗尔斯。如果找不到模块解决方案,我们将在下周进行测试。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多