2015-06-04 5 views
-1

Я построил несколько веб-форм в Drupal. Я хочу, чтобы пользователь былКак автоматически загружать последнюю подачу (одно представление)?

  • Отправить только ОДИН подавать по форме.
  • Автоматическая загрузка последнего представления, когда они снова отправляются на веб-форму.

Как это сделать?

ответ

0
  • Вы можете использовать WebForm компонент электронной почты, установите его в качестве unique и проверить User email as default, если бы в вашем веб-форму.
  • Автозагрузка представления веб-формы может быть возможна путем создания блока представлений с использованием контекстных фильтров для пользователя, дающего uid, предоставленный & отношение к веб-форме.

Как вы не можете дополнительный компонент WebForm для ваших WebForms (или не все из них), вы всегда можете создать модуль, включить функциональность WebForm и получить представленные данные по экземпляру WebForm с hook_form_alter() как:

/** 
* 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 представление на веб-форму можно сделать с помощью Webform -> Формы Настройки -> Общего Доводы Limit и на пользователь предел представления, как показано на скриншоте

enter image description here Для автозагрузки представления пользователя, так как выше не будут позволяют показать, что веб-форма будет осуществляться с использованием идентификатора отправки веб-формы, которую они уже отправили. Исходя из этого 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;