我们有一个Drupal 7 webform,在成功提交后会重定向到url。
我们需要做的是重新定位用户,如果他们再次登陆同一个网络表单并且已经提交过。
我们需要一个模块,还是以编程方式进行?
提前致谢。
答案 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)
所以这是我们最终选择的解决方案。
因此,webform在提交时正确地重定向(在webform设置中设置),然后在用户重新登录该页面并完成网络表单时重定向。