2015-06-04 75 views

回答

0
  • 您可以使用电子邮件的网页表单组件,将其设置为unique并检查User email as default,如果你有一个在你的网络表单。
  • 自动加载webform提交可能是可能的,通过创建一个具有上下文过滤器的视图块给用户提供了与webform的关系的uid提供&。

正如你可能不希望为您的WebForms额外的网页表单组件(或者不是全部),你总是可以创建一个模块,包括网络表单功能并与hook_form_alter()作为检索一个WebForm实例提交的数据:

/** 
* Implements hook_form_alter(). 
*/ 
function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id) { 

    // get current user 
    global $user; 

    // include webform functionality 
    module_load_include('inc','webform','includes/webform.submissions'); 

    // make sure to only alter webform forms 
    if (strpos($form_id, 'webform_client_form_') !== FALSE) { 

     // check if the user is a an authenticated user 
     if (in_array('authenticated user', $user->roles)) { 

      // build $filters array for submission retrieval 
      $filters = array(
       'nid' => $form['#node']->webform['nid'], 
       'uid' => $user->uid, 
      ); 

      /** 
      * When not using a unique webform component for 1 submission 
      * you can use a submission of the user on a webform instance 
      * to prevent another submission. 
      */ 

      // get submissions of the user by webform nid 
      if ($submissions = webform_get_submissions($filters)) { 

       // disable the form to limit multiple submissions per instance 
       $form['#disabled'] = TRUE; 

       /** 
       * Webform instance submission data of the current user 
       * can be found in $submissions[1]->data array 
       */ 

       # render your submission with Form api 
      } 

     } 

    } 

} 

希望这会有所帮助。

0

限制到每网络表单只有1提交可以通过网络表单来完成 - >表格设置 - >总提交极限与如本截图

enter image description here 自动装载用户的提交,每用户提交限制以来以上不会允许您通过使用他们已经提交的网络表单的提交ID来显示网络表单。基于此code

module_load_include('inc','webform','includes/webform.submissions'); 
$sid = 10; 
$submission = webform_get_submissions(array('sid' => $sid)); 
$nid = $submission[$sid]->nid; 

$web_submission = webform_get_submission($nid, $sid); 
$node = node_load($nid); 
$output = webform_submission_render($node, $web_submission, NULL, 'html'); 

print $output;